首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中正确使用**kwargs

在Python中正确使用**kwargs
EN

Stack Overflow用户
提问于 2009-07-08 22:45:53
回答 12查看 480.4K关注 0票数 527

当涉及到默认值时,在Python中使用**kwargs的正确方式是什么?

kwargs返回一个字典,但是设置缺省值的最佳方法是什么,或者有没有呢?我应该只把它当做字典来访问吗?使用get函数?

代码语言:javascript
复制
class ExampleClass:
    def __init__(self, **kwargs):
        self.val = kwargs['val']
        self.val2 = kwargs.get('val2')

一个简单的问题,但我找不到好的资源。在我所见过的代码中,人们用不同的方式做这件事,很难知道该用什么。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2009-07-08 14:47:38

对于字典中没有的键,您可以将默认值传递给get()

代码语言:javascript
复制
self.val2 = kwargs.get('val2',"default value")

但是,如果您计划使用具有特定默认值的特定参数,为什么不首先使用命名参数呢?

代码语言:javascript
复制
def __init__(self, val2="default value", **kwargs):
票数 569
EN

Stack Overflow用户

发布于 2009-07-08 15:03:14

我建议这样做

代码语言:javascript
复制
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中,覆盖任何重复的键。

票数 97
EN

Stack Overflow用户

发布于 2009-07-08 14:49:59

你会做的

代码语言:javascript
复制
self.attribute = kwargs.pop('name', default_value)

代码语言:javascript
复制
self.attribute = kwargs.get('name', default_value)

如果您使用pop,那么您可以检查是否发送了任何伪值,并采取适当的操作(如果有)。

票数 61
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1098549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档