Доходность в неявно определенном генераторе? - PullRequest
0 голосов
/ 24 декабря 2018

В В выражениях генератора написано

Во избежание вмешательства в ожидаемую работу самого выражения генератора, выход и выход из выражений запрещены в неявно определенном генераторе

Что это значит?

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Это относится к использованию выражений выхода из выражения генератора, например:

>>> g = ((yield x**2) for x in [1,2,3])                                                 
>>> list(g)                                                                             
[1, None, 4, None, 9, None]

Или:

>>> t = "hello", "world"                                                                
>>> g = ((yield from t) for x in 'xyz')                                                 
>>> list(g)                                                                             
['hello', 'world', None, 'hello', 'world', None, 'hello', 'world', None]

Этот синтаксис устарел в Python 3.7 и будет SyntaxError в Python 3.8+.Подробнее см. bpo10544 .

0 голосов
/ 24 декабря 2018

Это означает, что вы не можете сделать что-то вроде:

sum(yield x*x for x in range(10))

Очевидно, это связано с тем, что способ, которым явное yield взаимодействует с неявным выходом в разрешенном sum(x*x for x in range(10)), было бы трудно рассуждать ои это только ухудшится, если вы начнете использовать передовые методы, такие как generator.send и generator.throw.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...