[Python-checkins] python/nondist/peps pep-0340.txt,1.16,1.17
gvanrossum@users.sourceforge.net
gvanrossum at users.sourceforge.net
Tue May 3 18:57:20 CEST 2005
Update of /cvsroot/python/python/nondist/peps
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24156
Modified Files:
pep-0340.txt
Log Message:
Add another example (saving sys.stout).
Eradicate tabs.
Index: pep-0340.txt
===================================================================
RCS file: /cvsroot/python/python/nondist/peps/pep-0340.txt,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- pep-0340.txt 3 May 2005 16:32:24 -0000 1.16
+++ pep-0340.txt 3 May 2005 16:57:17 -0000 1.17
@@ -558,26 +558,42 @@
6. It is possible to write a regular iterator with the
semantics of example 1:
- class locking:
- def __init__(self, lock):
- self.lock = lock
- self.state = 0
- def __next__(self, arg=None):
- # ignores arg
- if self.state:
- assert self.state == 1
- self.lock.release()
- self.state += 1
- raise StopIteration
- else:
- self.lock.acquire()
- self.state += 1
- return None
- def __exit__(self, type, value=None, traceback=None):
- assert self.state in (0, 1, 2)
- if self.state == 1:
- self.lock.release()
- raise type, value, traceback
+ class locking:
+ def __init__(self, lock):
+ self.lock = lock
+ self.state = 0
+ def __next__(self, arg=None):
+ # ignores arg
+ if self.state:
+ assert self.state == 1
+ self.lock.release()
+ self.state += 1
+ raise StopIteration
+ else:
+ self.lock.acquire()
+ self.state += 1
+ return None
+ def __exit__(self, type, value=None, traceback=None):
+ assert self.state in (0, 1, 2)
+ if self.state == 1:
+ self.lock.release()
+ raise type, value, traceback
+
+ 7. Redirect stdout temporarily:
+
+ def saving_stdout(new_stdout):
+ save_stdout = sys.stdout
+ try:
+ sys.stdout = new_stdout
+ yield
+ finally:
+ sys.stdout = save_stdout
+
+ Used as follows:
+
+ block opening(filename, "w") as f:
+ block saving_stdout(f):
+ print "Hello world"
Acknowledgements
More information about the Python-checkins
mailing list