我想写一个Python函数myfun
,只接受可选参数a
和b
。
如果在调用a
时未指定b
或myfun
中的任何一个,我如何告诉myfun
使用a
的某些默认值b
?
def myfun(**kwargs):
a = kwargs.get('a', None)
# if a is not specified, use default a=4.4
b = kwargs.get('b', None)
# if b is not specified, use default b=2.1
c = 2*a
d = 3.1*b
return c, d
c,d = myfun(a=1,b=2)
print c,d
答案 0 :(得分:4)
**kwargs
用于收集任意数量的关键字参数。如果您只想接受两个,那么它不适合使用。
相反,您应该为a
和b
参数指定默认值:
def myfun(a=4.4, b=2.1):
演示:
>>> def myfun(a=4.4, b=2.1):
... print('a={}\nb={}'.format(a, b))
...
>>> myfun()
a=4.4
b=2.1
>>> myfun(a=1)
a=1
b=2.1
>>> myfun(a=1, b=2)
a=1
b=2
>>> myfun(b=2)
a=4.4
b=2
>>>
答案 1 :(得分:0)
将它们设置为默认值:
def myfun(a=4.4,b=2.1):
如果您未在函数定义中将关键字添加为关键字,则用户无法知道他们可以设置a
和b
。
如果您使用kwargs.get
设置值,则会将默认值传递给:
a = kwargs.get('a', 4.4) # a = 4.4 if a not in kwargs
b = kwargs.get('b', 2.1)