问题原因:
错误信息 “TypeError: ‘generator’ object is not callable “在Python中通常是因为使用括号调用了一个生成器函数。
举例说明:
def generator_function():
for i in range(1, 5):
yield i
my_generator = generator_function()
print(my_generator()) # 这行代码会报"TypeError: 'generator' object is not callable"错误
出现这个错误的原因是因为这行代码 print(my_generator())
中的括号调用了该生成器对象,但是生成器本身不是可调用对象。生成器对象通常使用next()
来一次次地产生值。
解决办法:
- 将代码中产生错误的部分修改为使用
next()
调用生成器对象的方式,例如:
def generator_function():
for i in range(1, 5):
yield i
my_generator = generator_function()
print(next(my_generator)) # 使用next()调用生成器对象,输出1
print(next(my_generator)) # 输出2
print(next(my_generator)) # 输出3
print(next(my_generator)) # 输出4
- 检查代码是否有其他地方调用了生成器对象,例如函数名使用错误,导致函数返回了生成器对象而不是生成器函数等情况。
总结:
在Python中,当代码中使用括号调用生成器对象时,会报告 “TypeError: ‘generator’ object is not callable” 错误。解决这个错误的方法是使用next()来调用生成器对象的值,检查代码中是否有其他地方不当地调用了生成器对象。