On Tue, Aug 2, 2011 at 6:11 PM, Mark McDuff email@example.com wrote:
I find that I am often writing code in the following pattern:
foo = MyContextManager(*args) for bar in my_iter: with foo: # do stuff
I think it would be much cleaner to be able to write:
for bar in my_iter with MyContextManager(*args): # do stuff
Some have similarly suggested:
for x in y if foo(x): # do stuff
Where would it end? What if someone wants: for bar in foo with context if baz: # stuff ?
Even just the Cartesian product of all Python's control structures with themselves quickly becomes unwieldy. Down this path lies Perl (particularly its control-structures-as-statement-suffixes feature). The simplicity and regularity gained is worth having to suffer 1 additional level of indentation now and then; refactor your code if the number of levels of indentation in it is becoming problematic.
Cheers, Chris -- http://rebertia.com