Python,字典复制和更新无效吗?

4
为什么下面的代码中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}

你无需输入“print”就可以将这些值打印到控制台上,顺便说一下。只需输入名称并按回车即可。 - JAL
1个回答

6

dict.update 方法会修改字典,但返回值为 None。这就是为什么。

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

b设置为None,同时

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

修改 d

很多 Python 方法都表现出这种行为。例如,list.sortrandom.shuffle 也会修改一个对象并返回 None。我认为 Python 这样做是为了防止长的“蔑视洛德米尔法则”的引用链,因为它们不会提高可读性,而且使查找异常抛出的位置更加困难。


谢谢,我忘记了dict.update()返回none。 我正要回答自己的问题,但你比我先做到了! 这是文档,http://docs.python.org/2/library/stdtypes.html - mgoldwasser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接