“ TypeError:'列表'对象不可调用”,即使我没有重命名任何内置函数

时间:2018-07-22 14:36:20

标签: python list tuples

我有这个非常简单的代码:

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。

2 个答案:

答案 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关键字解释为变量。