[Python-checkins] python/nondist/peps pep-0343.txt,1.4,1.5

gvanrossum@users.sourceforge.net gvanrossum at users.sourceforge.net
Sat May 14 07:08:44 CEST 2005


Update of /cvsroot/python/python/nondist/peps
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17313
Modified Files:
	pep-0343.txt 
Log Message:
Slight elaboration for readers who don't recall PEP 310.
Index: pep-0343.txt
===================================================================
RCS file: /cvsroot/python/python/nondist/peps/pep-0343.txt,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- pep-0343.txt	14 May 2005 05:02:28 -0000	1.4
+++ pep-0343.txt	14 May 2005 05:08:23 -0000	1.5
@@ -37,18 +37,34 @@
 However, the with-statement of PEP 310 does *not* hide control
 flow, in my view: while a finally-suite temporarily suspends the
 control flow, in the end, the control flow resumes as if the
- finally-suite wasn't there at all. Consider this:
+ finally-suite wasn't there at all.
+
+ Remember, PEP 310 proposes rougly this syntax (the "VAR =" part is
+ optional):
 
 with VAR = EXPR:
+ BLOCK
+
+ which roughly translates into
+
+ VAR = EXPR
+ VAR.__enter__()
+ try:
+ BLOCK
+ finally:
+ VAR.__exit__()
+
+ Now consider this example:
+
+ with f = opening("/etc/passwd"):
 BLOCK1
 BLOCK2
 
 Here, just as if the first line was "if True" instead, we know
 that if BLOCK1 completes without an exception, BLOCK2 will be
- reached; and if BLOCK1 raises an exception or executes a
- non-local goto (a break, continue or return), BLOCK2 is *not*
- reached. The magic added by the with-statement at the end doesn't
- affect this.
+ reached; and if BLOCK1 raises an exception or executes a non-local
+ goto (a break, continue or return), BLOCK2 is *not* reached. The
+ magic added by the with-statement at the end doesn't affect this.
 
 (You may ask, what if a bug in the __exit__ method causes an
 exception? Then all is lost -- but this is no worse than with


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /