当我在for循环中使用生成器时,它似乎"知道",当没有更多元素产生时.现在,我必须使用没有for循环的生成器,并手动使用next()来获取下一个元素.我的问题是,我怎么知道,如果没有更多的元素?
我只知道:next()引发一个异常(StopIteration),如果没有剩下的东西,那么对于这样一个简单的问题来说,这不是一个例外吗?是不是像has_next()那样的方法?
以下几行应该说清楚,我的意思是:
#!/usr/bin/python3
# define a list of some objects
bar = ['abc', 123, None, True, 456.789]
# our primitive generator
def foo(bar):
for b in bar:
yield b
# iterate, using the generator above
print('--- TEST A (for loop) ---')
for baz in foo(bar):
print(baz)
print()
# assign a new iterator to a variable
foobar = foo(bar)
print('--- TEST B (try-except) ---')
while True:
try:
print(foobar.__next__())
except StopIteration:
break
print()
# assign …Run Code Online (Sandbox Code Playgroud)