Python函数中的不定长参数相关知识总结
一、 不定长位置参数
# 在定义函数参数时,可以在形参的前面加*,该形参将获取所有的位置实参 # 它会将所有的实参保存在一个元组中 def fn(*args): print("args=", args) print("args type:", type(args)) # 带*形参和其他参数配合使用 def fn1(a, b, *args): print(a) print(b) print(args) # 下面这两种写法可以,但是在传实参的时候要注意 def fn2(*args, a, b): print(a) print(b) print(args) def fn3(a, *args, b): print(a) print(args) print(b) if __name__ == "__main__": # 接收所有的位置参数 fn(1, 2, 3, 4, 5) fn1(11, 12, 13, 14) # fn2(21, 22, 23, 24) #这么传会报错 fn2(21, 22, a=23, b=24) # fn3(21, 22, 23, 24) #这么传会报错 fn3(21, 22, 23, b=24)
fn运行 结果
fn1运行结果
fn2运行结果
fn3运行结果
总结:
1.带*的形参只能有一个,有多个会报错,不能识别
2.带*的形参可以和其他参数配合使用,比如和不带星的
3.带*的形参不一定要放在最后面,可以放在最前面,中间,最后。但是注意,带星的参数后的所有参数,必须以关键字参数的形式传递,否则会保错。
二、不定长关键字参数
# 带*的形参只能接收位置参数,关键字参数接收不能接收 # 如下会报错,fn传如下值是会报错的 def fn(*args): print("args=", args) print("args type:", type(args)) if __name__ == "__main__": # 这样传会保存,args不能接收关键字参数 fn(1, 2, 3, 4, a=10)
运行如下:
# **形参能接收关键字参数 # 它将接收的所有关键字参数统一保存在一个字典中 def fn4(**kwargs): print("kwargs = ", kwargs) print(type(kwargs)) if __name__ == "__main__": fn4(a=1, b=2, c=3)
运行结果:
总结:
1.**形参只能有一个,并且必须写在所有参数的最后。
2.字典的key就是参数的名字,字典的value就是参数的值
到此这篇关于Python函数中的不定长参数相关知识总结的文章就介绍到这了,更多相关Python不定长参数内容请搜索hwidc以前的文章或继续浏览下面的相关文章希望大家以后多多支持hwidc!