Python 程序设计讲义(55):Python 的函数——函数的参数
目录
- Python 程序设计讲义(55):Python 的函数——函数的参数
- 一、声明形参
- 二、传递实参(位置参数)
- 1、在调用函数进行传递参数时,使用的实参要与形参的数量一致
- 2、在调用函数进行传递参数时,实参与形参的顺序要对应
- 3、在调用函数进行传递参数时,实参与形参的数据类型要一致
- 三、为形参设置默认值
- 四、使用参数名称传递实参(关键字参数)
在定义函数时,可以在函数名后面的括号中设置参数。设置参数之后,调用函数时可以对函数的参数赋予不同的数值,函数的每次调用执行结果就可能不同。
一、声明形参
定义函数时,需要为函数声明参数,该参数相当于函数语句块中的变量,在函数内使用。定义函数时的参数常被称为形式参数,简称形参。其所用是在调用函数时专门为函数传递对应的值。形参在函数名后面的括号中定义。
声明形参的语法格式如下:
def 函数名(形参):函数体
当声明的参数为多个时,就构成了形参列表,每个形参之间用逗号(,
)分割。
语法格式如下:
def 函数名(形参1, 形参2, ...):函数体
例如:定义一个函数area()
,函数的功能是求长方体的面积,长方体的长、宽、高作为函数的形参。
代码如下:
def area(a,b,c):return a*b*c
二、传递实参(位置参数)
为函数声明形参以后,就可以在调用函数时进行参数传递。调用函数时传递的参数称为实际参数,简称实参。
传递实参相当于为形参赋值,调用函数时,传递实参,将实参值应用到函数中进行运算。
传递实参的语法格式如下:
函数名(实参)
如果实参有多个,实参之间用逗号隔开。
语法格式如下:
函数名(实参1, 实参2, ...)
1、在调用函数进行传递参数时,使用的实参要与形参的数量一致
例如:调用求长方体面积的函数area()
代码如下:
def area(a,b,c):return a*b*c
s=area(1,2,3)
print(s)程序的运行结果为:
6
如果调用函数时实参与形参的个数不一致,会报如下错误:
def area(a,b,c):return a*b*c
s=area(1,2,3,4)
print(s)程序的运行结果为:
Traceback (most recent call last):File "C:\Users\wgx58\PycharmProjects\PythonProject1\hello.py", line 3, in <module>s=area(1,2,3,4)
TypeError: area() takes 3 positional arguments but 4 were given
2、在调用函数进行传递参数时,实参与形参的顺序要对应
例如:
def addr(province,city):return province+cityprint(addr("河南省","新乡市"))
print(addr("新乡市","河南省"))#实参的顺序不对程序的运行结果为:
河南省新乡市
新乡市河南省
3、在调用函数进行传递参数时,实参与形参的数据类型要一致
调用函数时,如果实参与形参的数据类型不一致,可能会出现异常。
例如:
def area(a,b):return a*bx=input('请输入长方形的长度:')
y=input('请输入长方形的长度:')
print(area(x,y))程序的运行结果为:
请输入长方形的长度:20
请输入长方形的长度:15
Traceback (most recent call last):File "C:\Users\wgx58\PycharmProjects\PythonProject1\hello.py", line 6, in <module>print(area(x,y))~~~~^^^^^File "C:\Users\wgx58\PycharmProjects\PythonProject1\hello.py", line 2, in areareturn a*b~^~
TypeError: can't multiply sequence by non-int of type 'str'
三、为形参设置默认值
在调用函数时,实参的数量必须和形参的数量一致,否则将抛出异常。为了避免因为实参和形参数量不一致而出现错误,可以在定义函数时,为形参指定默认值。
这样,在调用函数时,如果没有为指定默认值的形参传递实参,则函数会使用形参的默认值,从而避免出错。
为形参设置默认值的语法格式如下:
def 函数名(形参1, 形参2, ... , 形参n=value)说明:
(1)形参n=value:表示为形参n指定默认值为value。
(2)在调用函数时,如果为形参n指定了实参,则把实参的值传递给形参n,如果没有为形参n指定实参,则使用默认值value作为形参n的值。
(3)指定默认值的形参必须放在所有形参的最后。
例如:
def area(a=1, b=1):#为形参a,b指定默认值1return a*bprint(area()) #调用时没有指定实参,在形参a和b的值都为1程序的运行结果为:
1
四、使用参数名称传递实参(关键字参数)
在调用函数时,实参与形参的顺序必须保持一致,否则得到的结果可能和预期的结果不相符。
为了避免因为实参和形参顺序不一致导致的问题,用户可以在调用函数时,使用形参名称传递实参。
语法格式如下:
函数名(形参1=value, 形参2=value, ... , 形参n=value)
例如:
def addr(province,city):return province+cityprint(addr("河南省","新乡市"))
print(addr(city="新乡市",province="河南省"))程序的运行结果为:
河南省新乡市
河南省新乡市