Ilpo Nyyssönen wrote: > Nicolas Fleury <[EMAIL PROTECTED]> writes: >>What about making the ':' optional (and end implicitly at end of current >>block) to avoid over-indentation? >> >>def foo(): >> with locking(someMutex) >> with opening(readFilename) as input >> with opening(writeFilename) as output >> ... > > > How about this instead: > > with locking(mutex), opening(readfile) as input: > ... > > So there could be more than one expression in one with.
I prefer the optional-indentation syntax. The reason is simple (see my discussion with Andrew), most of the time the indentation is useless, even if you don't have multiple with-statements. So in my day-to-day work, I would prefer to write: def getFirstLine(filename): with opening(filename) as file return file.readline() than: def getFirstLine(filename): with opening(filename) as file: return file.readline() But I agree that in the case of only one with-statement, that's no big deal. Also, if multiple with-statements are separated by other indentating statements, your proposal doesn't help: with locking(lock) if condition: with opening(filename) as file for line in file: ... would still be needed to be written: with locking(lock): if condition: with opening(filename) as file: for line in file: ... Regards, Nicolas -- http://mail.python.org/mailman/listinfo/python-list