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 the > `expr` 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 the `yield`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>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4