#python #python-3.x #asynchronous #yield
#python #python-3.x #асинхронный #выход
Вопрос:
continue
Оператор в следующем фрагменте приостанавливает while
цикл, как только условие выполнено. Кто-нибудь поможет мне понять, что происходит под капотом? Спасибо!
import asyncio
async def yield_even():
count = 0
while True:
if count % 2 != 0:
continue
yield count
if count > 5:
break
count = 1
async def main():
async for i in yield_even():
print(i)
if __name__ == "__main__":
asyncio.run(main())
Ответ №1:
У вас там бесконечный цикл, потому что вы не увеличиваете свой count
в этом случае, и как только это конкретное условие выполнено, оно выполняется навсегда, поскольку ни один проход кода, который if
когда-либо будет выполнен.
Также нет смысла в while True
цикле, если у вас есть ограничение итерации на основе счетчика. Выполняйте регулярные for