Что происходит в «продолжении» после того, как асинхронность уступила? - PullRequest
0 голосов
/ 09 апреля 2019

Оператор 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 Ответ

1 голос
/ 10 апреля 2019

У вас там бесконечный цикл, потому что вы не увеличиваете свой count в этом случае, и как только это конкретное условие будет выполнено, оно будет выполнено навсегда, так как нет кода, который if никогда не будет выполнен.

Также нет точечной петли while True, если у вас есть счетчик итераций. Делать регулярно for

...