[Python-Dev] Tricky way of of creating a generator via a comprehension expression (original) (raw)
Ivan Levkivskyi levkivskyi at gmail.com
Wed Nov 22 16:25:55 EST 2017
- Previous message (by thread): [Python-Dev] Tricky way of of creating a generator via a comprehension expression
- Next message (by thread): [Python-Dev] Tricky way of of creating a generator via a comprehension expression
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
22 Лис 2017 22:19 "Ethan Furman" <ethan at stoneleaf.us> пише:
On 11/22/2017 11:01 AM, Ivan Levkivskyi wrote:
I think how to formulate these rules more "precisely" so that they will be
all consistent even if there is a
yield
inside. The key idea is that neither comprehensions nor generator expressions should create a function scope surrounding theexpr
in (expr for ind in iterable) and [expr for ind in iterable]. (this still can be some hidden implementation detail)So as Serhiy proposed in one of his first posts any comprehensions and generator expressions with
yield
are not valid outside functions. If such comprehension or generator expression is inside a function, then it makes it a generator, and all theyield
s are yielded from that generator, for example:
Whether it's inside or outside a function should be irrelevant -- a comprehension / generator expression should have no influence on the type of the resulting function (and at least synchronous comprehensions / generator expressions should be able to live outside of a function).
def fun_gen():
return list((yield i) for i in range(3))
The return says it's returning a list, so that's what it should be returning
def f(): yield 1 return list()
Here return also says it should return a list, so this is not an argument. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20171122/35c47ebe/attachment.html>
- Previous message (by thread): [Python-Dev] Tricky way of of creating a generator via a comprehension expression
- Next message (by thread): [Python-Dev] Tricky way of of creating a generator via a comprehension expression
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]