用 \*\*kwargs 解释 get() 方法?

新手上路,请多包涵

试图弄清楚这段代码是如何工作的。

我知道 **kwargs 返回一个字典,而 get() 函数在字典中搜索给定的键,如果找不到则返回默认值。但是在代码中,我不明白 get() 方法是否正在搜索例如:“clock”或 self.clock 或两者。

 def update(self, *args, **kwargs):
    self.screen = kwargs.get("screen",self.screen)
    self.clock = kwargs.get("clock",self.clock)
    self.active = kwargs.get("active",self.active)

以下是对此方法的调用示例:

 debug.update(active = numActive)

据我了解,变量 numActive 通过更新方法作为活动传递,然后作为 **kwargs 然后通过 get() 方法搜索难道我不能删除 kwargs 的使用吗?我知道需要多少参数?

感谢您对理解的任何帮助。

原文由 Tazz B 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 799
1 个回答

get 方法中的第二个参数是默认值。

根据 Python2.7 的文档:

得到(键[,默认])

如果键在字典中,则返回键的值,否则返回默认值。如果未给出默认值,则默认为 None,因此此方法永远不会引发 KeyError。

来源: https ://docs.python.org/2/library/stdtypes.html#dict.get

说明 当您尝试从字典中“获取”某些内容时,如果找不到键,或者值为 None,它将返回 None。

但是,如果您提供第二个参数(默认值), 当且仅当 找不到密钥时,才会返回默认值。

没有默认值的示例

对于以下代码:

 some_dict = {
    "key_1": 1,
    "key_2": None,
}
print some_dict.get("key_1")
print some_dict.get("key_2")
print some_dict.get("key_3")

你会得到输出:

 1
None
None

默认值示例

对于以下代码

some_dict = {
    "key_1": 1,
    "key_2": None,
}
print some_dict.get("key_1", 1)
print some_dict.get("key_2", 2)
print some_dict.get("key_3", 3)

你会得到输出:

 1
None
3

查看您的代码

我将在评论中解释您的代码:

 def update(self, *args, **kwargs):
    # If the kwargs contain the key 'screen', the following get method will
    # return its value, or else it would remain whatever value was in
    # self.screen's variable before
    self.screen = kwargs.get("screen",self.screen)

    # If the kwargs contain the key 'clock', the following get method will
    # return its value, or else it would remain whatever value was in
    # self.clock's variable before
    self.clock = kwargs.get("clock",self.clock)

    # If the kwargs contain the key 'active', the following get method will
    # return its value, or else it would remain whatever value was in
    # self.active's variable before
    self.active = kwargs.get("active",self.active)

希望这可以帮助。干杯。

原文由 Danny 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题