我使用的是Python 2.7.12(默认,2016年11月19日,06:48:10) 在linux2上[GCC 5.4.0 20160609],当我在其中运行下面的代码时会显示相应的错误。我搜索了很多关于这个但是我无法找到它为什么会这样
>>> bob=dict(name='bob smith',age=42,pay='10000',job='dev')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'dict' object is not callable
答案 0 :(得分:14)
在一位新口译员中:
>>> bob=dict(name='bob smith',age=42,pay='10000',job='dev')
>>> bob
{'age': 42, 'pay': '10000', 'job': 'dev', 'name': 'bob smith'}
但是,您获得了TypeError
:
TypeError:&#39; dict&#39;对象不可调用
您收到此错误会告诉您您的 dict
无法调用。
由于我的 dict
在我打开新的翻译时可以调用,这意味着您的 dict
不同。
最有可能的是,您定义了dict
变量,该变量覆盖了内置dict
。
dict = {...}
行,并重命名您的变量。
正如@Robᵩ所指出的,不要为变量使用内置名称。特别要避免诱人str
,list
等等。
答案 1 :(得分:6)
在该交互式会话的上一行中,您将dict
名称反弹到某个变量。也许你有一句话dict={1:2}
或dict=dict(one=1, two=2)
。
以下是一个这样的会议:
>>> dict=dict(one=1)
>>> bob=dict(name='bob smith',age=42,pay='10000',job='dev')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'dict' object is not callable
>>>
作为一般规则,不应使用内置类型名称作为变量名称,以防止此错误。
答案 2 :(得分:1)
编辑:忽略这一点,我被告知这是不好的做法。
正如mgilson所说,问题可能是你有一个名为dict的变量。解决方法是运行
del dict
以该名称删除变量。