
On Mon, Oct 17, 2011 at 7:00 AM, Paul Moore <p.f.moore@gmail.com> wrote:
On 17 October 2011 13:05, Nick Coghlan <ncoghlan@gmail.com> wrote:
For comprehensions, the parallel with the proposed given statement would be almost exact:
seq = [x*y for x in range(10) for y in range(5)]
would map to:
seq = _list_comp given _outermost_iter = range(10): _list_comp = [] for x in _outermost_iter: for y in range(5): _list_comp.append(x*y)
Whoa...
NAME1 = EXPR1 given NAME2 = EXPR2: ASSIGNMENT FOR LOOP
????
Surely that doesn't match the behaviour for "given" that you were suggesting? Even if I assume that having _outermost_iter = range(10) before the colon was a typo, having a for loop in the given suite scares me. I can see what it would mean in terms of pure code-rewriting semantics, but it doesn't match at all my intuition of what the term "given" would mean.
I'd expect the given suite to only contain name-definition statements (assignments, function and class definitions). Anything else should be at least bad practice, if not out and out illegal...
It's the same as a class definition--where you can, but likely don't, have for loops and the like. In the end it's just the resulting namespace that matters. -eric
Paul. _______________________________________________ Python-ideas mailing list Python-ideas@python.org http://mail.python.org/mailman/listinfo/python-ideas