为什么以下代码显示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}
答案 0 :(得分:5)
dict.update修改了dict但返回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,因为它们不会提高可读性,并且可以更难找到异常。