查看: 1875|回复: 3

TypeError: 'list' object is not callable

[复制链接]

9

主题

74

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2018-9-19 17:05:11 | 显示全部楼层 |阅读模式
我是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
请告诉我错在哪里。
回复

使用道具 举报

22

主题

107

帖子

266

积分

中级会员

Rank: 3Rank: 3

积分
266
发表于 2018-9-19 17:07:14 | 显示全部楼层
你好像在代码中的某个地方用list实例名称隐藏了内置名称。
  1. >>> example = list('easyhoss')
  2. >>> list = list('abc')
  3. >>> 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在本地命名空间中有一个- 它不需要在更高级别的命名空间中进行搜索。
回复

使用道具 举报

11

主题

80

帖子

199

积分

注册会员

Rank: 2

积分
199
发表于 2018-9-19 17:08:56 | 显示全部楼层
对我来说,这是一个 flask服务器返回一些videos数组(我期望以json格式..)的问题
添加json.dumps(videos)修复此问题
回复

使用道具 举报

4

主题

33

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2018-9-19 17:09:43 | 显示全部楼层
你可能在代码中使用内置名称“list”作为变量。如果你使用的是Jupyter notebook,有时即使你将该变量的名称从“list”更改为不同的内容并重新运行该单元格,你仍可能会收到错误消息。在这种情况下,你需要重新启动Kernal。为了确保名称已更改,请在创建列表对象时单击单词“list”,然后按Shit + Tab,并检查Docstring是否将其显示为空列表。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表