我有一个简单的发电机:
def counter(n):
counter = 0
while counter <= n:
counter += 1
yield counter
print(f"Nice! You counted to {counter}")
def test_counter():
for count in counter(6):
print(f"count={count}")
if count > 3:
break
在本例中,一旦计数达到3,就会出现中断。然而,代码的唯一问题是break在yield语句处终止生成器的执行。它不会在yield语句之后运行print语句。当中断发生时,是否有一种方法可以在yield语句之后的生成器中执行代码
运行示例:
# What happens:
>>> test_counter()
count=1
count=2
count=3
count=4
# What I'd like to see:
>>> test_counter()
count=1
count=2
count=3
count=4
Nice! You counted to 4
您必须将
print
放在finally
-块中:您可以使用生成器的
send
方法:现在
test_counter()
按预期工作相关问题 更多 >
编程相关推荐