不定长参数
*args **kwargs
是不定长参数,可以用循环取出
*args 单星号参数
1.定义时用*定义,调用时用多个参量
def name(*args):# 定义时用*定义,调用时用多个参量
print(args)
name(1,2,3) # 定义时用*定义,调用时用多个参量
>>> (1, 2, 3)
lis = [1,2,3]
name(*lis) # 定义时用*定义,调用时用多个参量 **dic就是将dic拆解为多个参量
>>> (1, 2, 3)
2.定义时用多个参量定义,调用时可以用多个参量
def name(a,b):
print(a)
print(b)
lis=[1,2]
name(*lis)
1
2
**kwargs 双星号参数
1.定义时用**定义,调用时用多个参量
def test(**kwargs): # 定义时用**定义,调用时用多个参量
print(kwargs)
test(a="1",b="2")# 定义时用**定义,调用时用多个参量
>>> {'a': '1', 'b': '2'}
dic={"a"=1,"b"=2}
test(**dic) # 定义时用**定义,调用时用多个参量 **dic就是将dic拆解为多个参量
>>> {'a': '1', 'b': '2'}
2.定义时用多个参量定义,调用时可以用多个参量
def test(a,b):
print(a)
print(b)
dic = {"a":1,"b":2}
test(**dic)
>>> 1
>>> 2
*和**的顺序
In[6]: def test(*args,**kwargs):
def test(*args,**kwargs):
print(f"args: {args}")
print(f"kwargs: {kwargs}")
test(1,2,3,4,5,a=1,b=2,c=3,d=4,e=5)
>>> args: (1, 2, 3, 4, 5)
>>> kwargs: {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
1.*
参数,必须出现在**
参数之前
2.Python中函数参数是引用传递(注意不是值传递)。对于不可变类型,因变量不能修改,所以运算不会影响到变量自身;而对于可变类型来说,则相反
参考:
https://blog.csdn.net/yilovexing/article/details/80577510