[Python-Dev] Extended Function syntax (original) (raw)
Moore, Paul Paul.Moore@atosorigin.com
Mon, 3 Feb 2003 13:57:05 -0000
- Previous message: [Python-Dev] bsddb3 upgrade woes - more gentle transition?
- Next message: [Python-Dev] Extended Function syntax
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
From: Michael Hudson [mailto:mwh@python.net]
How would I do this elegantly without the assignment...?
Just as you do with if: Good point. "with" testlist ':' NEWLINE it is, if it's me that gets to write the PEP.
Are you saying that you don't see the value of
with var =3D expr:
suite
because it can be rewritten as
var =3D expr
with var:
suite
? Hmm, I suppose so. But let's take a step back - what is the "with" syntax for? It's a little more than a shorthand for a try...finally block, because it has an encapsulation value as well.
Consider
try:
f =3D open("blah.txt", "r")
...
finally:
f.close()
compared with
# Here, the definition of autoclose is omitted, that's
# exactly the point - we don't *care* how it's implemented,
# it's just an open file that manages its resources for me
with f =3D autoclose("blah.txt", "r"):
...
and with
f =3D autoclose("blah.txt", "r")
with f:
...
The problem with the third case as compared to the second is that using autoclose() rather than open() has no value in the absence of the with statement. And contrariwise, if x is an object which hasn't been designed for use with the "with" construct, "with x" is meaningless.
So I guess what I'm saying is that "with ... autoclose" only make sense in combination. Putting the two on different lines loses that connection. If you need to name the result of the autoclose() call, you either allow the with construct to include the assignment, or you lose that conceptual link.
Paul.
- Previous message: [Python-Dev] bsddb3 upgrade woes - more gentle transition?
- Next message: [Python-Dev] Extended Function syntax
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]