蛋蛋超人 发表于 2018-9-19 17:05:11

TypeError: 'list' object is not callable

我是Python的新手。list教程中有一个例子:
example = list('easyhoss')
现在,在教程中,example= ['e','a',...,'s']。但在我的案例中,我得到以下错误:
>>> example = list('easyhoss')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable
请告诉我错在哪里。

马猴烧酒 发表于 2018-9-19 17:07:14

你好像在代码中的某个地方用list实例名称隐藏了内置名称。
>>> example = list('easyhoss')
>>> list = list('abc')
>>> example = list('easyhoss')
Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: 'list' object is not callable
Python在字典中存储对象名称(函数和类也是对象)(名称空间实现为字典),因此你可以在任何范围内重写几乎任何名称。它不会显示为某种错误。你最好使用IDE(例如PyCharm的免费版本或带有Python插件的Atom)来突出显示名称阴影。
Python强调“特殊情况不足以打破规则”。你问题背后有几条规则。
1.      命名空间。Python支持嵌套命名空间。从理论上讲,你可以无休止地嵌套命名空间。正如我已经提到的,名称空间基本上是名称字典和对相应对象的引用。你创建的任何模块都有自己的“全局”命名空间。实际上,它只是与该特定模块相关的本地命名空间。
2.      范围。当你调用一个名称时,Python会在本地命名空间中查找(相对于调用),如果找不到该名称,则会在更高级别的命名空间中重复该尝试。built-in函数和类驻留在特殊的高阶命名空间中__builtins__。如果list在模块的全局命名空间中声明,解释器将永远不会在更高级别的命名空间中搜索该名称__builtins__。同样,假设你var在模块中的函数内创建变量,并在模块中创建另一个变量var。然后,如果你var在函数内部引用,Python将永远不会为你提供全局var,因为var在本地命名空间中有一个- 它不需要在更高级别的命名空间中进行搜索。

强人锁男 发表于 2018-9-19 17:08:56

对我来说,这是一个 flask服务器返回一些videos数组(我期望以json格式..)的问题
添加json.dumps(videos)修复此问题

此间少年 发表于 2018-9-19 17:09:43

你可能在代码中使用内置名称“list”作为变量。如果你使用的是Jupyter notebook,有时即使你将该变量的名称从“list”更改为不同的内容并重新运行该单元格,你仍可能会收到错误消息。在这种情况下,你需要重新启动Kernal。为了确保名称已更改,请在创建列表对象时单击单词“list”,然后按Shit + Tab,并检查Docstring是否将其显示为空列表。
页: [1]
查看完整版本: TypeError: 'list' object is not callable