备注:本文修订于2022年10月26日。

TypeError: 'list' object is not callable 问题解决

TypeError: 'list' object is not callable 翻译成中文是:列表变量不可用。也就是说,代码中存在某个列表变量,但是这个列表变量的用法有问题,导致它不用。之所以出现这种现象,往往是因为新手写Python代码,没有掌握Python的列表变量的用法。出现这情况的原因有两种,各位读者根据自己的情况任选一种即可。

原因1:

因为Python内置了list函数(如下文所示),而我们自己写的程序出现了以“list”命名的变量,导致冲突。类似这样的代码:

list = ['a', 'b', 'c', 'd']
 
number_tuple = (1, 2, 3, 4, 5)

tuple_to_list = list(number_tuple)

运行程序报错:TypeError: 'list' object is not callable。应修改为:

letter_list = ['a', 'b', 'c', 'd']
 
number_tuple = (1, 2, 3, 4, 5)

tuple_to_list = list(number_tuple)

补充:Python list()函数

list() 函数用于将元组、区间(range)等转换为列表。其基本用法形式是:list(tuple/range...),返回值为列表对象。

注意:列表和元组非常类似,但列表与元组最大的区别在于:元组是不可改变的,列表是可改变的。元组支持的操作,列表基本上都支持;列表支持对元素的修改,而元组则不支持。从这个角度来看,可以认为列表是增强版的元组。虽然大部分时候都可使用列表来代替元组,但如果程序不需要修改列表所包含的元素,那么使用元组代替列表会更安全。

原因2

列表索引是使用中括号,而不是使用小括号,如果我们这样写代码:

data = [1,2,3,4,5,6]
print(data(0))

运行代码就会报错:TypeError: 'list' object is not callable,应该这样写:

data = [1,2,3,4,5,6]
print(data[0])

补充说明

国内的技术文章大同小异,讲解的都不太清楚,关于TypeError: 'list' object is not callable问题,可以看看这篇英文文章:https://codefather.tech/blog/python-object-is-not-callable/,这篇分析的更全面,大家不妨读一读。

标签: none

添加新评论