一、 不定长位置参数
# 在定义函数参数时,可以在形参的前面加*,该形参将获取所有的位置实参 # 它会将所有的实参保存在一个元组中 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不定长参数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/weixin_45416165/article/details/117913442