Почему asyncio.iscoroutine возвращает True на генераторе? - PullRequest
0 голосов
/ 25 сентября 2018

Обратите внимание на следующую функцию:

def test(): yield 1

Метод asyncio.iscoroutine() вернет True для метода test().Следует также отметить, что inspect.iscoroutine() вернет False.

Есть причина, почему asyncio считает, что это сопрограмма?В любом случае, похоже, что один из них ошибся.

1 Ответ

0 голосов
/ 25 сентября 2018

Это похоже на ошибку документов в новых документах Python 3.7 asyncio.Во время вопроса и этого ответа новые документы сказали

Верните True, если obj является объектом сопрограммы.

Этот метод отличается от inspect.iscoroutine (), поскольку возвращает True для сопрограмм на основе генератора, украшенных @ coroutine.

, в то время как старые документы сказали

Верните True, еслиobj - это объект сопрограммы, который может быть основан на генераторе или асинхронной функции сопрограммы.

Старые документы верны;asyncio.iscoroutine рассматривает любой объект-генератор как сопрограмму, а не только объекты, созданные с помощью @coroutine -генераторных функций-генераторов.


После отчета о выпуске опрашивающего документы были обновлено для удаления "украшенных @coroutine" из документов asyncio.iscoroutine.Я хотел бы опубликовать ссылку на archive.org, показывающую старый текст, но на сайте archive.org эта версия не заархивирована.Вы все еще можете увидеть старый текст в истории изменений github или в коммите, который я только что связал.

...