Ank*_*kur 6 python arguments function python-2.7
我发现了许多关于python函数参数的查询,但仍然感到困惑.假设我想在某个函数中传递几个参数.
def anyFunc(name, age, sex = 'M', *cap_letters ):
print "name ", name
print "age ", age
print "sex ", sex
for s in cap_letters:
print "capital letter: ", s
Run Code Online (Sandbox Code Playgroud)
name和age参数是位置参数.sex是默认参数,后跟可变长度的非关键字参数,这些参数很少是随机大写字母.所以,如果我跑了
anyFunc("Mona", 45, 'F', *('H', 'K', 'L'))
Run Code Online (Sandbox Code Playgroud)
它给了我完美的输出..
name Mona
age 45
sex F
capital letter: H
capital letter: K
capital letter: L
Run Code Online (Sandbox Code Playgroud)
但是,如果我通过下面的参数,我想使用默认的性别值而不是传递它.输出并不像预期的那样.
anyFunc("John", 45, *('H', 'K', 'L'))
name John
age 45
sex H
capital letter: K
capital letter: L
Run Code Online (Sandbox Code Playgroud)
它应该采用性别的默认值,即"M".我也试图在最后通过性别论证,但它给了我语法错误.有没有办法实现我想要的?
让性成为你功能中的**kwargs。在您的函数中,检查用户是否已将性别作为关键参数传递。如果用户没有传递任何内容,则继续使用默认的性别值。
你的函数将如下所示:
def anyFunc(name, age, *cap_letters,**sexKwarg):
print "name ", name
print "age ", age
sex = sexKwarg.get('sex', 'M')
print "sex ", sex
for s in cap_letters:
print "capital letter: ", s
用法:
anyFunc("Mona", 45, *('H', 'K', 'L'), sex = 'F')
anyFunc("Mona", 45, *('H', 'K', 'L')) ##use default sex
| 归档时间: |
|
| 查看次数: |
700 次 |
| 最近记录: |