Python报错”TypeError: ‘generator’ object is not callable “怎么处理?

  • Post category:Python

问题原因:

错误信息 “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()来一次次地产生值。

解决办法:

  1. 将代码中产生错误的部分修改为使用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
  1. 检查代码是否有其他地方调用了生成器对象,例如函数名使用错误,导致函数返回了生成器对象而不是生成器函数等情况。

总结:

在Python中,当代码中使用括号调用生成器对象时,会报告 “TypeError: ‘generator’ object is not callable” 错误。解决这个错误的方法是使用next()来调用生成器对象的值,检查代码中是否有其他地方不当地调用了生成器对象。