New submission from thautwarm <yaoxiansa...@gmail.com>:
Currently we can use `exprlist` as the iterator in a `for` statement: ``` for i in 1, 2,: print(i) 1 2 ``` However, when it comes to comprehension expressions: ``` [i for i in 1, 2] SyntaxError: invalid syntax ``` I know there might be some reason that leads to the absence of the consistency between `for` expression and statement, but IMO until now it could be better to allow `exprlist` to be the iterator of comprehensions. I'm not sure whether our community has noticed this problem so I'm to propose it here. A crucial benefit from this change is that we can avoid the ambiguity when a comprehension is accepted as function parameter. ``` f(for i in [1, 2, 3], 1, 2) ``` We now get a SyntaxError when writing such codes, but people who know this syntax might think the parameters can be distinguished from each other, but it's still not allowed. Allowing `exprlist` to be the iterator slot of a comprehension would be a rational solution. If `f(for i in [1, 2, 3], 1, 2)` is equivalent to `f(for i ([1, 2, 3], 1, 2))`, it will be natural to restrict the number of parameters to be just 1 when the parameter is a comprehension. You can slightly accept this workaround and try following examples: ``` f(for i in 1,) f(for i in 1, for j in 2, 3,) f(for i in 1, 2 if cond(i) for j in 3, for k in 4,) ``` Obviously, in each of above cases, the number of parameters is 1, just because a `exprlist` could the iterator of a comprehension. The disadvantage of this change is, there is not too many related use cases, for any `[expr for target in iter_elem1, iter_elem2, ...]` could be altered as `[expr for target in (iter_elem1, iter_elem2, ...)]`. Meanwhile, that might not be true when it comes to someone works frequently with interactive python. Finally, I have finished this implementation at https://github.com/thautwarm/cpython/tree/exprlist-in-comprehensions, and I do want to make contributions to cpython projects. If most of you feel comfortable with this change, may I make a PR next? ---------- messages: 326692 nosy: gvanrossum, serhiy.storchaka, thautwarm, yselivanov priority: normal severity: normal status: open title: allow exprlist as the iterators of comprehensions to be consistent with for statements _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue34845> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com