Multiple optional arguments python
所以我有一个函数,有几个可选参数,比如:
1 | def func1(arg1, arg2, optarg1=None, optarg2=None, optarg3=None): |
optarg1和optarg2通常一起使用,如果指定了这两个参数,则不使用optarg3。相反,如果指定了optarg3,则不使用optarg1&optarg2。如果它是一个可选参数,那么函数很容易"知道"要使用哪个参数:
1 2 3 4 | if optarg1 != None: do something else: do something else |
号
我的问题是如何"告诉"函数,当有多个可选参数并且并非总是指定所有参数时,要使用哪个可选参数?用**Kwargs分析参数是不是可行?
**kwargs用于让python函数接受任意数量的关键字参数,然后**解包关键字参数字典。在此处了解更多信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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! |
号
如果您在函数的调用中分配它们,那么您可以预先清空正在传入的参数。
1 2 3 4 5 6 7 | def foo( a, b=None, c=None): print("{},{},{}".format(a,b,c)) >>> foo(4) 4,None,None >>> foo(4,c=5) 4,None,5 |