当涉及到默认值时,在Python中使用**kwargs
的正确方式是什么?
kwargs
返回一个字典,但是设置缺省值的最佳方法是什么,或者有没有呢?我应该只把它当做字典来访问吗?使用get函数?
class ExampleClass:
def __init__(self, **kwargs):
self.val = kwargs['val']
self.val2 = kwargs.get('val2')
一个简单的问题,但我找不到好的资源。在我所见过的代码中,人们用不同的方式做这件事,很难知道该用什么。
发布于 2009-07-08 14:47:38
对于字典中没有的键,您可以将默认值传递给get()
:
self.val2 = kwargs.get('val2',"default value")
但是,如果您计划使用具有特定默认值的特定参数,为什么不首先使用命名参数呢?
def __init__(self, val2="default value", **kwargs):
发布于 2009-07-08 15:03:14
我建议这样做
def testFunc( **kwargs ):
options = {
'option1' : 'default_value1',
'option2' : 'default_value2',
'option3' : 'default_value3', }
options.update(kwargs)
print options
testFunc( option1='new_value1', option3='new_value3' )
# {'option2': 'default_value2', 'option3': 'new_value3', 'option1': 'new_value1'}
testFunc( option2='new_value2' )
# {'option1': 'default_value1', 'option3': 'default_value3', 'option2': 'new_value2'}
然后以任何您想要的方式使用这些值
dictionaryA.update(dictionaryB)
将dictionaryB
的内容添加到dictionaryA
中,覆盖任何重复的键。
发布于 2009-07-08 14:49:59
你会做的
self.attribute = kwargs.pop('name', default_value)
或
self.attribute = kwargs.get('name', default_value)
如果您使用pop
,那么您可以检查是否发送了任何伪值,并采取适当的操作(如果有)。
https://stackoverflow.com/questions/1098549
复制相似问题