转载:https://blog.csdn.net/abc_12366/article/details/79627263
def func(a, b):
print(a+b)
func(1, 2) #3
def jia(a,b=6):
print(a+b)
jia(4)##10
#传入一个列表,严格地说这不是可变参数
def calc(l):
sum = 0
for n in l:
sum += n
return sum
calc([1,2,3]) ##7
#这才是可变参数,虽然在使用上和列表没有区别,但是参数nums接收到的是一个tuple(这些参数在传入时被自动组组装为一个元祖)
def calc(*nums):
sum = 0
for n in nums:
sum += n
return sum
calc([1,2,3]) ##7
可变参数允许传入0个~多个参数,而关键字参数允许在调用时以字典形式传入0个或多个参数(注意区别,一个是字典一个是列表);在传递参数时用等号(=)连接键和值
#用两个星号表示关键字参数
def person_info(name, age, **kw):
print("name", name, "age", age, "other", kw)
>>> person_info("Xiaoming", 12)
name Xiaoming age 12 other{}
>>> person_info("Dahuang", 35, city = "Beijing")
name Dahuang age 35 other {‘city‘:‘Beijing‘}
总结一下,在Python中一种可以使用5中传递参数的方式(位置参数、默认参数、变长参数、关键字参数、命名关键字参数)
注意,这些参数在书写时要遵循一定的顺序即:位置参数、默认参数、变长参数、关键字参数、命名关键字参数(和本文的行文顺序一致)
这里简单举两个栗子
def f1(a, b, c=0, *args, **kw):
print("a = ", a, "b = ", b, "args = ", args, "kw = ",kw)
def f2(a, b, c=0, *, d, **kw):
print("a = ", a, "b = ", b, "c = ", c, "d = ", d, "kw = ", kw)
>>> f1(1, 2)
a = 1 b = 2 c = 0 args =() kw = {}
>>> f1(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {}
>>> f1(1, 2, 3, ‘a‘, ‘b‘)
a = 1 b = 2 c = 3 args = (‘a‘, ‘b‘) kw = {}
>>> f1(1, 2, 3, ‘a‘, ‘b‘, x = 99)
a = 1 b = 2 c = 3 args = (‘a‘, ‘b‘) kw = {‘x‘:99}
>>> f2(1, 2, d = 99, ext = None)
a = 1 b =2 c = 0 d = 99 kw = {‘ext‘:None}
原文:https://www.cnblogs.com/renping/p/9608977.html