[Python-checkins] r87303 - python/branches/py3k/Doc/whatsnew/3.2.rst

raymond.hettinger python-checkins at python.org
Thu Dec 16 03:24:12 CET 2010


Author: raymond.hettinger
Date: Thu Dec 16 03:24:12 2010
New Revision: 87303
Log:
Improve the ContextDecorator example.
Modified:
 python/branches/py3k/Doc/whatsnew/3.2.rst
Modified: python/branches/py3k/Doc/whatsnew/3.2.rst
==============================================================================
--- python/branches/py3k/Doc/whatsnew/3.2.rst	(original)
+++ python/branches/py3k/Doc/whatsnew/3.2.rst	Thu Dec 16 03:24:12 2010
@@ -818,33 +818,31 @@
 >>> import logging
 >>> logging.basicConfig(level=logging.INFO)
 >>> @contextmanager
-... def track_entry_and_exit():
-... logging.info('Entry')
+... def track_entry_and_exit(name):
+... logging.info('Entering: {}'.format(name))
 ... yield
-... logging.info('Exit')
+... logging.info('Exiting: {}'.format(name))
 
 Formerly, this would have only been usable as a context manager:
 
->>> with track_entry_and_exit():
+>>> with track_entry_and_exit('widget loader'):
 ... print('Some time consuming activity goes here')
+... load_widget()
 
 Now, it can be used as a decorator as well:
 
->>> @track_entry_and_exit
+>>> @track_entry_and_exit('widget loader')
 ... def activity():
-... print('Some time consuming activity goes here'
+... print('Some time consuming activity goes here')
+... load_widget()
 
 Trying to fulfill two roles at once places some limitations on the technique.
 Context managers normally have the flexibility to return an argument usable by
-the :keyword:`with`-statement, and function decorators can be constructed to
-accept arguments or to know the name of the function they are enclosing. Since
-those features of context managers and function decorators are not overlapping,
-those features are not supported.
-
-In the above example, there is not a clean way for the
-:func:`track_entry_and_exit` decorator to know the name of the enclosed
-function. Likewise, the *track_entry_and_exit* context manager does not have a
-way to return a logging instance for use in the body of enclosed statements.
+the :keyword:`with`-statement, but there is no parallel for function decorators.
+
+In the above example, there is not a clean way for the *track_entry_and_exit*
+context manager does not have a way to return a logging instance for use in the
+body of enclosed statements.
 
 (Contributed by Michael Foord in :issue:`9110`.)
 


More information about the Python-checkins mailing list

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