New submission from Inyeol Lee <inyeol....@gmail.com>: Simple coroutine with for loop works:
>>> def pack_a(): while True: L = [] for i in range(2): L.append((yield)) print(L) >>> pa = pack_a() >>> next(pa) >>> pa.send(1) >>> pa.send(2) [1, 2] >>> If using list comprehension (generator expression), it fails: >>> def pack_b(): while True: L = [(yield) for i in range(2)] print(L) >>> pb = pack_b() <endless loop here> I understand what's going on here - generator expression is converted to nested function and there's no way to either stop the execution inside nested function (since it's not started yet!) or send() a value to its yield expression. Still I think this behavior is a bug and needs fixed. - best fix would make it behave the same as for loop. - if it's not fixable, yield expression inside genexp should not be allowed. ---------- components: Interpreter Core messages: 122475 nosy: Inyeol.Lee priority: normal severity: normal status: open title: yield expression inside generator expression does nothing type: behavior versions: Python 3.1 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue10544> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com