To 'with' or not to 'with': how is the question ?
Alex Martelli
aleaxit at yahoo.com
Sun Sep 3 04:24:37 EDT 2000
"Daniel Dittmar" <daniel at dittmar.net> wrote in message
news:39B17A79.214FD56B at dittmar.net...
[snip]
> def alternativeThree ():
> with sys.stdout:
> .write (...)
> .write (...)
> .write (...)
def alternativePython():
for __ in [sys.stdout]:
__.write(...)
__.write(...)
__.write(...)
I don't think we need a "syntax revolution" to let you
achieve basically the same structure as you can do today.
Maybe "with foo:" would be more direct than the
"for __ in [foo]:" syntax, but the latter has the Pythonic
advantage of letting you name the placeholder variable;
__ is OK, but others may like a style where the name
for the placeholder is less 'transparent', more explicit:
for out in [sys.stdout]:
out.write(...)
out.write(...)
out.write(...)
And of course the ability to specify the placeholder names
lets you nest these with-equivalents.
Implied/unexpressed variablenames are unPythonic. E.g.,
most OO languages let you say "foo" within a method to
mean, implicitly, "the foo of this object I'm handling"; in
Python, "explicit is better than implicit", so you explicitly
say self.foo instead -- and it is good. Reduces confusion,
etc. So, if such explicit placeholders as 'self' are OK, and
one of Python's hallmarks, why not render the 'with' in a
very similar vein? All that's left may be a vague desire for
smoother syntax-sugar, maybe
with sys.stdout as __:
to replace
for __ in [sys.stdout]:
but I, personally, doubt the usage frequency of 'with' is
sufficient to warrant a special-purpose subclassing of the
more general & useful for-syntax.
Alex
More information about the Python-list
mailing list