e9e*_*e9s 6 optional-arguments python-3.x
所以我有一个带有几个可选参数的函数,如下所示:
def func1(arg1, arg2, optarg1=None, optarg2=None, optarg3=None):
Run Code Online (Sandbox Code Playgroud)
Optarg1和optarg2 通常一起使用,如果指定了这两个args,则不使用optarg3.相反,如果指定了optarg3,则不使用optarg1和optarg2.如果它是一个可选参数,则函数很容易"知道"使用哪个参数:
if optarg1 != None:
do something
else:
do something else
Run Code Online (Sandbox Code Playgroud)
我的问题是,当有多个可选参数并且并非总是指定所有参数时,如何"告诉"函数使用哪个可选参数?用**kwargs解析参数的方法是什么?
**kwargs用于让Python函数接受任意数量的关键字参数,然后**解包关键字参数的字典.在这里了解更多
def print_keyword_args(**kwargs):
# kwargs is a dict of the keyword args passed to the function
print kwargs
if("optarg1" in kwargs and "optarg2" in kwargs):
print "Who needs optarg3!"
print kwargs['optarg1'], kwargs['optarg2']
if("optarg3" in kwargs):
print "Who needs optarg1, optarg2!!"
print kwargs['optarg3']
print_keyword_args(optarg1="John", optarg2="Doe")
# {'optarg1': 'John', 'optarg2': 'Doe'}
# Who needs optarg3!
# John Doe
print_keyword_args(optarg3="Maxwell")
# {'optarg3': 'Maxwell'}
# Who needs optarg1, optarg2!!
# Maxwell
print_keyword_args(optarg1="John", optarg3="Duh!")
# {'optarg1': 'John', 'optarg3': 'Duh!'}
# Who needs optarg1, optarg2!!
# Duh!
Run Code Online (Sandbox Code Playgroud)
如果在函数调用中分配它们,则可以抢占要传入的参数。
def foo( a, b=None, c=None):
print("{},{},{}".format(a,b,c))
>>> foo(4)
4,None,None
>>> foo(4,c=5)
4,None,5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13118 次 |
| 最近记录: |