Python 在定义函数时不需要指定形参的类型,完全由调用者传递的实参类型以及 Python 解释器的理解和推断来决定。
接下来,本文将介绍以下四个函数的参数类型:

  • 位置参数、默认值参数、关键参数与可变长度参数。

1. 位置参数

位置参数:调用函数时实参和形参的顺序必须严格一致,并且实参和形参的数量必须相同

即下面的格式:

def showArgs(a, b, c):
	print(a, b, c)
	
show(1, 2, 3) # 1 2 3
show(1, 2) # TypeError: showArgs() missing 1 required positional argument: 'c'
show(1, 2, 3, 4) # TypeError: showArgs() takes from 1 to 3 positional arguments but 4 were given

2. 默认值参数

默认值参数:在调用有默认值参数的时,可以不对有默认值的参数赋值(如果有,则会使用传递的值),即与上面的位置参数不同的是,可以缺少参数传递,不过也不能多传。

它的使用方法:即,在定义函数时def demo(a=1, b=2) 填写参数的时候给一个默认值。

举个例子看看:

def showArgs(a, b=3, c=2):
	print(a, b, c)
	
showArgs(1, 2, 3) # 1 2 3
showArgs(1, 2) # 1 2 2
showArgs(1, 2, 3, 4) # TypeError: showArgs() takes from 1 to 3 positional arguments but 4 were given

注意事项:

  • 默认值参数必须出现在函数参数列表的最右端任何一个默认值参数右边不能有非默认值参数
  • 默认值参数的赋值只会在函数定义时被解释一次
    (所以默认值参数最好为不可变类型)

3. 关键参数

使用,关键参数,实参顺序和形参顺序可以不一样,不过如果参数没有默认值,参数数量也要一致。

它的使用方法:在调用函数时demo(a=1, b=2) 来指定参数的值。

举个例子看看:

def showArgs(a, b, c):
	print(a, b, c)

showArgs(1, 2, c=3) # 1 2 3
showArgs(a=1, c=22, b=33) # 1 33 22

注意事项:

  • 关键参数后面不能跟随位置参数

错误情况:

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) # (1, 2, 3)
showArgs(7, 8) # (7, 8)

在这里插入图片描述

4.2) **parameter

必须接收的是关键参数!!!
它的使用方法如下:

def showArgs(**args):
	print(args)

showArgs(a=1, b=2, c=3) # {'a': 1, 'b': 2, 'c': 3}
showArgs(a=7, b=8) # {'a': 7, 'b': 8}

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐