我有这个非常简单的代码:
g = ('f','a')
h = list(g)
我得到此追溯:
Traceback (most recent call last):
File "<ipython-input-87-7941c56fab04>", line 1, in <module>
runfile('/Users/username/Desktop/untitled3.py', wdir='/Users/username/Desktop')
File "/Users/username/anaconda/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 866, in runfile
execfile(filename, namespace)
File "/Users/username/anaconda/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "/Users/username/Desktop/untitled3.py", line 10, in <module>
h = list(g)
TypeError: 'list' object is not callable
请原谅我的无知;在这里一定缺少一些非常基本的东西。有人可以帮我了解发生了什么吗?我没有足够的东西来尝试这个简单的代码。
我正在运行Python 3.6.0。
答案 0 :(得分:3)
为帮助您更好地形象地呈现这一点。您可能在iPython中做了这样的事情:
>>> list = [1, 2, 3]
>>> g = ('f', 'a')
>>> h = list(g)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable
这样做时,您将文字列表设置为列表 class ,因此,当尝试按()
调用 时,会收到此错误,因为文字[]
没有__call__
方法:
>>> your_list = [1, 2, 3]
>>> your_list()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable
调用内置的 list 类将为您提供一个list
对象。因此,如果您重置解释器并尝试执行此操作,您将进一步了解发生了什么:
>>> a_list = list()
>>> a_list()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable
答案 1 :(得分:1)
我相信您必须在源文件中使用list作为变量。这是我转储的错误转储
>>> a = ('g','h')
>>> b = list(a)
>>> b
['g', 'h']
>>> list = [1,2]
>>> c = list(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable
请注意,当我在定义名为list的变量之前定义了'b'时,它返回了一个列表,但是在将变量命名为list之后尝试将'c'定义为list(a)
时出现了错误。这是因为python将list
关键字解释为变量。