棘手:'dict'对象不可调用

use*_*042 2 python dictionary

这是一个棘手的错误,你可以使用Python进入字典:

dict = {'a':5,'c':5}
#Typing some codes
Run Code Online (Sandbox Code Playgroud)

在程序的某个时刻,您决定创建一个空字典:

new_dic = dict()
Run Code Online (Sandbox Code Playgroud)

你得到这个Traceback:

Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'dict' object is not callable
Run Code Online (Sandbox Code Playgroud)

你能否告诉我它是否是Python中的一个错误,或者只是在使用内置函数时必须小心,而不是先为一些变量指定它们的名字?

Blc*_*ght 10

你遇到的是"阴影".您已在某个命名空间(模块的全局命名空间或函数的本地命名空间)中创建了一个与内置dict类型同名的对象.这可以防止您dict以通常的方式访问内置函数.

你可以仍然得到它,带着几分更多的努力.的builtins(或__builtin__在Python 2)模块保持所有的内置可直接常访问的对象.因此,要制作空字典,您可以执行以下操作:

import builtins

dict = whatever

newdic = builtins.dict()
Run Code Online (Sandbox Code Playgroud)

但是......避免dict为自己的对象使用名称可能只是一个更好的主意.