Python,字典复制和更新不起作用?

时间:2013-11-27 17:20:25

标签: python dictionary copy

为什么以下代码显示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}

1 个答案:

答案 0 :(得分:5)

dict.update修改了dict但返回None。这就是为什么

b = d.copy().update({'e':2})

b设为等于None,而

d.update({'c':3})

修改d

许多Python方法都以这种方式运行。例如,list.sortrandom.shuffle也会修改对象并返回None。我认为Python这样做是为了阻止long "Law-of-Demeter-scoffing" chains of references,因为它们不会提高可读性,并且可以更难找到异常。