python代码问题:TypeError: 'list' object is not callable

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python代码问题:TypeError: 'list' object is not callable相关的知识,希望对你有一定的参考价值。

class test:
def list(self):
list = []
return list
print test().list()
运行结果:[]
但如果这样:
class test:
def __init__(self):
self.list=[]
def list(self):
list = []
return list
print test().list()
就会报错,像这样:
Traceback (most recent call last):
File "C:\Users\pqj123\Desktop\test.py", line 7, in <module>
print test().list()
TypeError: 'list' object is not callable
这是什么原因,求指教。

    如果在是Python解释器里运行的话,没有问题。“X,L”就是打印出X,L的值。问题应该在最后一行的X,L,如果在写成一个脚本由Python执行的话,就不能这么写了。要用"print X,L"明确告诉Python输出X,L的值。

    Python(英语发音:/ˈpaɪθən/), 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

    折叠在Python中学习机器学习的四个步骤:

1、首先你要使用书籍、课程、视频来学习 Python 的基础知识[2]

2、然后你必需掌握不同的模块,比如 Pandas、Numpy、Matplotlib、NLP (自然语言处理),来处理、清理、绘图和理解数据。

3、接着你必需能够从网页抓取数据,无论是通过网站API,还是网页抓取模块Beautiful Soap。通过网页抓取可以收集数据,应用于机器学习算法。

4、最后一步,你必需学习机器学习工具,比如 Scikit-Learn,或者在抓取的数据中执行机器学习算法(ML-algorithm)。

参考技术A error已经告诉你了 list对象不能用函数形式调用,就是不能callable。
简单来说就是list变量和list函数重名了。本回答被提问者采纳
参考技术B >>> list('asdf')
Traceback (most recent call last):
File "<pyshell#154>", line 1, in <module>
list('asdf')
TypeError: 'list' object is not callable
你可以先确认一下list变量是否被使用:

>>> list #输入list回车,检查list的值
[1, 3, 2, 4, 6, 7, 12, 10] #发现list被占用
>>> del list #删除变量
>>> list #确认一下结果
<class 'list'> #变量被删除
>>> list('adfadf') #再次调用list()函数
['a', 'd', 'f', 'a', 'd', 'f'] #可以正常使用了。

Python - TypeError:需要可迭代参数

【中文标题】Python - TypeError:需要可迭代参数【英文标题】:Python - TypeError: iterable argument required 【发布时间】:2012-08-16 14:02:42 【问题描述】:

当我尝试执行以下代码时,我得到 "TypeError: iterable argument required"

for i in range(len(SE_FE_Lists)):                    
    print "** ", SE_FE_Lists[i]["List_contents"]
    if ":" in SE_FE_Lists[i]["List_contents"]:
        print ": ", SE_FE_Lists[i]
        print "*--* ", SE_FE_Lists[i]["List_contents"]
    if " " in SE_FE_Lists[i]["List_contents"]:
        print "Space :", SE_FE_Lists[i]
        print "*--* ", SE_FE_Lists[i]["List_contents"]    

错误位于 if ":" in List[i]["List_contents"]:

列表内容:

['List_selection': 'List1', 'List_contents': '1:4', 'List_selection': 'List2', 'List_contents': '1 2 4', 'List_selection': 'List3',
 'List_contents': 1]

作为输出我得到:

**  1:4

:  'List_selection': 'List1', 'List_contents': '1:4'

*--*  1:4

**  1 2 4

Space : 'List_selection': 'List2', 'List_contents': '1 2 4'

*--*  1 2 4

**  1

谢谢。

【问题讨论】:

List的内容是什么? 【参考方案1】:

首先,如果你想遍历你的对象列表中的项目,你应该使用pythonic的方式:

for item in List:

    if ":" in item["List_contents"]:
        print "*--* ", item["List_contents"]
    if " " in item["List_contents"]:
        print "*--* ", item["List_contents"]  

对于您遇到的错误,您的 List 对象似乎不是字典列表。

编辑:

在你的版本之后,问题是由于你的列表的最后一项:'List_selection': 'List3', 'List_contents': 1,这里的成员'List_contents'是一个整数,python在整数中找不到“:”...... 如果不能修改列表内容,尝试通过str()方法强制python使用字符串:

if ":" in str(item["List_contents"]):

【讨论】:

【参考方案2】:

问题是你的字典中有一个整数,而不是一个可迭代的:

'List_selection': 'List3', 'List_contents': 1

这一行:

if ":" in SE_FE_Lists[i]["List_contents"]:

在整数1 中寻找“:”。 in 运算符需要可迭代的,而不是整数,所以这显然是错误。如果列表内容看起来像这样,它应该可以工作:

'List_selection': 'List3', 'List_contents': '4 5 6'

【讨论】:

以上是关于python代码问题:TypeError: 'list' object is not callable的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:需要一个类似字节的对象,而不是 python 3.5.2 和 pytesseract 中的“str”

Python-TypeError:'

Python 3 TypeError: must be str, not bytes with sys.stdout.write()

Python 3 urllib 产生 TypeError: POST data should be bytes or an iterable of bytes。它不能是 str 类型

Python 3.5 TypeError:参数有多个值[重复]

TypeError:需要一个类似字节的对象,而不是'str'-python 2到3 [重复]