Python 在定义函数时不需要指定形参的类型,完全由调用者传递的实参类型以及 Python 解释器的理解和推断来决定。 接下来,本文将介绍以下四个函数的参数类型:
1.?位置参数
位置参数:调用函数时实参和形参的顺序必须严格一致,并且实参和形参的数量必须相同。
即下面的格式:
def showArgs(a, b, c):
print(a, b, c)
show(1, 2, 3)
show(1, 2)
show(1, 2, 3, 4)
2.?默认值参数
默认值参数:在调用有默认值参数的时,可以不对有默认值的参数赋值(如果有,则会使用传递的值),即与上面的位置参数不同的是,可以缺少参数传递,不过也不能多传。
它的使用方法:即,在定义函数时:def demo(a=1, b=2) 填写参数的时候给一个默认值。
举个例子看看:
def showArgs(a, b=3, c=2):
print(a, b, c)
showArgs(1, 2, 3)
showArgs(1, 2)
showArgs(1, 2, 3, 4)
注意事项:
- 默认值参数必须出现在函数参数列表的最右端,任何一个默认值参数右边不能有非默认值参数
- 默认值参数的赋值只会在函数定义时被解释一次
(所以默认值参数最好为不可变类型)
3.?关键参数
使用,关键参数,实参顺序和形参顺序可以不一样,不过如果参数没有默认值,参数数量也要一致。
它的使用方法:在调用函数时: demo(a=1, b=2) 来指定参数的值。
举个例子看看:
def showArgs(a, b, c):
print(a, b, c)
showArgs(1, 2, c=3)
showArgs(a=1, c=22, b=33)
注意事项:
错误情况:
showArgs(1, 22, b=33)
它会报这个错误:TypeError: showArgs() got multiple values for argument 'b' ,因为虽然 b 使用了关键参数,但是前面两个为位置参数,通过位置参数,b 已经被赋值过了
showArgs(a=11, c=222, 333)
它会报这个错误:SyntaxError: positional argument follows keyword argument ,关键参数后面不能跟有位置参数
4.?可变长度参数
可变长度参数:即参数长度不固定 它有着以下两种形式:
*parameter : 接收多个位置实参并将其放在元组中**parameter : 接收多个关键参数并将其放在字典中
其中的 parameter 可以自定义为自己想要的名字
4.1) *parameter
必须接收的是位置参数!!! 它的使用方法如下:
def showArgs(*args):
print(args)
showArgs(1, 2, 3)
showArgs(7, 8)
4.2) **parameter
必须接收的是关键参数!!! 它的使用方法如下:
def showArgs(**args):
print(args)
showArgs(a=1, b=2, c=3)
showArgs(a=7, b=8)
|