Python函数传参(*星号)
位置参数
位置参数传递是最为简单的传递方式,按照函数参数的位置顺序逐个匹配传入,传入参数的个数必须与函数参数个数一致。
def func(a,b,c): print("args:",a,b,c) if __name__ == "__main__": func(2,3,4) #输出结果 args: 2 3 4
关键字参数
通过关键字对变量进行赋值,可以对全部关键字进行赋值,也可以对部分关键字进行赋值
对全部关键字进行赋值时,位置可以随意改变
def func(a,b,c): print("args:",a,b,c) if __name__ == "__main__": func(c=4,a=2,b=3) #输出结果 args: 2 3 4
对部分关键字进行赋值时,属于位置参数和关键字参数的混用,有关键字的部分必须放在后面
def func(a,b,c): print("args:",a,b,c) if __name__ == "__main__": func(2,c=4,b=3) #输出结果 args: 2 3 4
此时2传给a
默认参数
此时无默认值的参数要放在有默认值参数的前面
def test(self,b,a=1): self.a=a self.b=b
、必须是这样,不然程序会报错
但是我们在调用这个函数的时候,可以颠倒顺序
test(a,b=0)
命名关键字参数
与普通关键字参数不同,命名关键字参数必须用*星号进行区分,*星号后面的参数必须通过关键字传入
def func(a,b,*,c): print("args:",a,b,c) if __name__ == "__main__": func(2,3,c=4) #输出结果 args: 2 3 4
如果直接func(2,3,4)会报错
可变参数
如果定义的函数中带有*args或者**args都是属于可变参数方式进行参数传入
*args是以元组的方式收集不匹配的的位置参数
**args是以字典的形式收集不匹配的位置参数,仅对关键字参数传入有效
(3条消息) Python中的*args,**kwargs(可变参数)(传参)_hxxjxw的博客-CSDN博客_args kwargs