Что происходит при `continue` после завершения async?

#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