为什么以下代码对 b 显示 None
而不是 {'a': 1, 'e': 2}?
Python 2.7.3
>>>> d = {'a' :1 }
>>>> b = d.copy().update({'e':2})
>>>> print b
None
>>>> d.update({'c':3})
>>>> print d
{'a': 1, 'c': 3}
最佳答案
dict.update修改字典但返回 None
。这就是为什么
b = d.copy().update({'e':2})
将b
设置为等于None
,而
d.update({'c':3})
修改d
。
很多 Python 方法都是这样的。例如,list.sort
和random.shuffle
也修改一个对象并返回None
。我认为 Python 这样做是为了阻止 long "Law-of-Demeter-scoffing" chains of references因为它们不会提高可读性,并且更难找到引发异常的位置。
关于Python,字典复制和更新不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20249004/