【问题标题】:Updating Python dict at the time of initialization在初始化时更新 Python dict
【发布时间】:2020-11-06 03:57:00
【问题描述】:

我只是在玩 Python 的 dictionarieslists。我发现了这些奇怪的东西-

在初始化任何 Python dict、list 或其他一些数据类型时,您无法执行该数据类型的操作。

# Case 1
d1 = {}
d1.update({'a': 'A'})
print(d1)

# Case 2
d2 = {}.update({'p': 'P'})
print(d2)

输出:

{'a': 'A'}
None

奇怪的是,d2 既没有初始化也没有抛出任何错误。

我对此有何看法?

好吧,Python's interpreter reads code line by line。因此,当它读取行 d1 = {} 时,它会将 d1 和它的类型 (dict) 保存在内存中。

d2 = {}.update({'p': 'P'}) 不会发生这种情况

dict 的任何操作都可以在 dict 对象上执行,在第二种情况下从未启动过,即。 从未创建字典对象

您对此有何看法?

如果我错了,请放弃你的答案并纠正我。我想,我可能是。

谢谢

【问题讨论】:

  • 在此处发布之前,请参阅适用的文档。 update 更改调用对象,并返回 None。您的两个示例在功能上不等效。

标签: python dictionary findbugs


【解决方案1】:

dict.update() 是一个没有返回类型的操作。

【讨论】:

    【解决方案2】:

    好吧,.update() 将字典更新到位并且什么也不返回,所以当你初始化一个空字典并更新它时,它返回 Nothing 并且 None 被分配给 d2。相反,它会像:

    d = {}
    d.update({'p': 'P'})
    print(d)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-17
      • 2016-06-04
      • 1970-01-01
      • 2020-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多