我有一个这样定义的生成器:
def lengths(x):
for k, v in x.items():
yield v['time_length']
它起作用了,叫它
for i in lengths(x):
print i
生产:
3600
1200
3600
300
哪些是正确的数字。
但是,当我这样称呼它时:
somefun(lengths(x))
其中
somefun()
定义为:def somefun(lengths):
for length in lengths(): # <--- ERROR HERE
if not is_blahblah(length): return False
我收到此错误消息:
TypeError: 'generator' object is not callable
我误解了什么?
最佳答案
您不需要调用生成器,请删除()
括号。
您可能会对这样一个事实感到困惑:您对函数内部的变量使用了与生成器名称相同的名称;以下内容也会起作用:
def somefun(lengen):
for length in lengen:
if not is_blahblah(length): return False
然后将传递给
somefun
函数的参数绑定到本地lengen
变量,而不是lengths
,以明确说明本地变量与您在其他地方定义的lengths()
函数不同。关于python - TypeError:'generator'对象不可调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12074726/