一个人如何循环通过发电机?我是这样想的:
gen = function_that_returns_a_generator(param1, param2)
if gen: # in case the generator is null
while True:
try:
print gen.next()
except StopIteration:
break
还有更pythonic的方式吗?
Answers:
只是
for x in gen:
# whatever
会成功的 请注意,if gen
始终返回True
。
if gen
并不总是返回True
。如果op的function_that_returns_a_generator()
return None
,则在语句中gen
求值为。False
if
function_that_returns_a_generator()
返回一个生成器(大胆的假设,对吗?)。 None
不是发电机。
您可以简单地遍历它:
>>> gen = (i for i in range(1, 4))
>>> for i in gen: print i
1
2
3
但是请注意,您只能循环一次。下次生成器将为空:
>>> for i in gen: print i
>>>
break
; 不是continue