Day5 - 07 函数的参数-参数组合
现在我们学完了位置参数、默认参数、可变参数、关键字参数、命名关键字参数五种参数类型。
在Python中定义函数,可以使用这五种参数进行组合。
但是参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
在Python中定义函数,可以使用这五种参数进行组合。
但是参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
def f1(a, b, c=0, *pp, **kw):
print(a,b,c,pp,kw)
dd = [9,10,12,14,15,17,19,20]
dk = {'q':99, 'p':88}
f1(*dd,**dk)
print(a,b,c,pp,kw)
dd = [9,10,12,14,15,17,19,20]
dk = {'q':99, 'p':88}
f1(*dd,**dk)
9 10 12 (14, 15, 17, 19, 20) {'q': 99, 'p': 88}
def f2(a,b,c=0,*,job,hh):
print(a,b,c,job,hh)
dw = (1,2,3)
ww ={'job':'jj','hh':'HH'}
f2(*dw,**ww)
print(a,b,c,job,hh)
dw = (1,2,3)
ww ={'job':'jj','hh':'HH'}
f2(*dw,**ww)
1 2 3 jj HH
可以通过一个tuple和dict来调用函数。
def f3(a,b,c,*pp,host,words,**kw):
print(a,b,c,pp,host,words,kw)
pp1 = (1,2,3,4,5,6,7,8,9,0)
pp2 = {'host':'HH', 'words':'WW'}
pp3 = {'oo':'oooo', 'ppp':'pppppp'}
pp4 = {'host':'HH', 'words':'WW', 'oo':'oooo', 'ppp':'pppppp'}
f3(*pp1,**pp2,**pp3)
f3(*pp1,**pp4)
def f3(a,b,c,*pp,host,words,**kw):
print(a,b,c,pp,host,words,kw)
pp1 = (1,2,3,4,5,6,7,8,9,0)
pp2 = {'host':'HH', 'words':'WW'}
pp3 = {'oo':'oooo', 'ppp':'pppppp'}
pp4 = {'host':'HH', 'words':'WW', 'oo':'oooo', 'ppp':'pppppp'}
f3(*pp1,**pp2,**pp3)
f3(*pp1,**pp4)
1 2 3 (4, 5, 6, 7, 8, 9, 0) HH WW {'oo': 'oooo', 'ppp': 'pppppp'}
1 2 3 (4, 5, 6, 7, 8, 9, 0) HH WW {'oo': 'oooo', 'ppp': 'pppppp'}
实际上,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数时如何定义的。
1 2 3 (4, 5, 6, 7, 8, 9, 0) HH WW {'oo': 'oooo', 'ppp': 'pppppp'}
实际上,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数时如何定义的。
虽然可以组合多达5中参数与, 但不要同时使用太多的组合,否则函数接口的可读性和可理解性都会非常差。
练习:
以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积:
def product(x, y):
return x * y
-------------------------------------
def pro(*x,y=1):
s = 1
for i in x:
s = i * s
print( s*y )
def pro(*x,y=1):
s = 1
for i in x:
s = i * s
print( s*y )
个个原创文章
欢迎讨论
https://www.cnblogs.com/konggg/
欢迎转载收藏,转载请注明来源,谢谢支持!