【发布时间】:2021-05-17 04:39:09
【问题描述】:
我对 python 很陌生,我一直在 udemy 上学习,只是在业余时间玩。我正在使用一些生成 dict/list 的函数。我遇到了“TypeError: 'list' object is not callable”的问题
error, botlist = bots(None)
for bot in botlist:
print(bot.get('id'))
print(type(bot.get('id')))
for bot in botlist:
botid = bot.get('id')
print(type(bot.get('id')))
error, dealsa = dealsa(botid)
my_list = []
for deal in dealsa:
my_list.append(f"id:{deal.get('id')} name:{deal.get('bot_name')} finished?:{deal.get('finished?')} bot_id:{deal.get('bot_id')}")
myfile=open(f"{deal.get('bot_id')}_active.txt","w")
myfile.write('\n'.join(my_list))
myfile.close()
error, dealsf = dealsf(botid)
my_list = []
for deal in dealsf:
my_list.append(f"id:{deal.get('id')} name:{deal.get('bot_name')} finished?:{deal.get('finished?')} bot_id:{deal.get('bot_id')}")
myfile=open(f"{deal.get('bot_id')}_history.txt","w")
myfile.write('\n'.join(my_list))
myfile.close()
因此可以保存文本文件。如果我在 botlist 循环中删除 bot 并手动设置一个 id,它将正确创建文本文件。当我尝试在 for 循环中运行它时,出现类型错误。但它确实列出了打印函数中的机器人 ID,然后创建了第一组文本文件。打印函数 int 结果是我需要输入到 deala 和 dealf 函数的 botid 中的正确整数。我猜我做错了迭代,但不知道如何纠正它。这是当前的输出:
2649989
<class 'int'>
2642117
<class 'int'>
2628896
<class 'int'>
2555868
<class 'int'>
2536597
<class 'int'>
2481665
<class 'int'>
2392904
<class 'int'>
2367291
<class 'int'>
Traceback (most recent call last):
File "path", line 79, in <module>
error, dealsa = dealsa(botid)
TypeError: 'list' object is not callable
我真的很困惑为什么第一个 print for 循环有效,但第二个却抛出了类型错误。
【问题讨论】:
-
显然
dealsa是一个列表,不能像函数一样调用列表。但是您没有显示定义dealsa的代码的相关部分,因此我们无法告诉您更多信息。 -
假设您实际上有一个名为
dealsa的函数,它返回一个元组,其中第二项是一个列表,如果您不将该列表命名为与该函数相同的名称,将会有所帮助。 -
请提供预期的MRE - Minimal, Reproducible Example。显示中间结果与预期结果的偏差。我们应该能够将您的代码块粘贴到文件中,运行它并重现您的问题。这也让我们可以在您的上下文中测试任何建议。