TypeError: 'list' object is not callable

时间:2020-02-23 14:43:46  来源:igfitidea点击:

在本教程中,我们将看到如何解析TypeError:"列表"对象在Python中不可调用。
让我们先明白为什么我们收到这个错误。

在Python,一个 built-in name是Python解释器分配预定义值的名称。
该值可以是对象,函数或者类。
无论范围,所有这些内置名称都将提供。

请注意,Python不会阻止我们重新分配这些内置名称。
内置名称不保留,我们也可以将它们中的程序用作变量名称。

例如:SET = {}打印("带有变量名的空的DICT:",设置)

输出:带有变量名的空的dict:{}

正如我们所看到的,我们能够创建一个变量名称 set并将空字典分配给它。

所以这是一个非常常见的错误,你应该避免重写(overwriting)任何内置的名称,如列表,设置或者dict等。

Pep8提供有关命名变量的建议。

让我们在举例的帮助下看到这个:

list = [1,2,2,3,4,2,1,1,4]
print(list)
 
set1={ 1,2,2,2,3,3,4,2,1,2,5,3}
#converting a set into list using list function
 
print(list(set1))

输出:

Traceback (most recent call last):
  File “main.py", line 7, in 
    print(list(set1))
TypeError: 'list' object is not callable

正如我们所看到的,我们创建了一个变量名称 list并分配给它。
这个 list变量具有重写(overwriting)预定义的列表内置名称,因此当我们使用列表函数来转换设置为列表时,它会提高错误。

解决方案1

要解决问题,让我们将列表变量重命名为list1

list1 = [1,2,2,3,4,2,1,1,4]
print(list1)
 
set1={ 1,2,2,2,3,3,4,2,1,2,5,3}
#converting a set into list using list function
 
print(list(set1))

输出:

[1,2,2,3,4,2,1,1,4] [1,2,3,4,5]

正如我们所看到的,这解决了这个问题。

解决方案2

如果我们使用的是任何交互式Python会话,请使用此。

del list

如果上述解决方案仍然没有为我们工作,则可能还有一个原因。

解决方案3.

如果我们尝试访问()而不是[]访问列表索引,那么我们也可能获得此问题。

list1 = ['Netherlands','China','Bhutan','Nepal']
print(list1(2))

输出:

回溯(最近调用最后):文件"main.py",第2行,在打印中(list1(2))typearror:'list'对象不是可调用的

将列表(2)更改为列表[2],它将正常工作。

list1 = ['Netherlands','China','Bhutan','Nepal']
print(list1(2))