[Python-checkins] cpython (3.2): Closes #14306: clarify expensiveness of try-except and update code snippet

georg.brandl python-checkins at python.org
Sat Mar 17 16:58:15 CET 2012


http://hg.python.org/cpython/rev/9a7dcfbcf726
changeset:   75781:9a7dcfbcf726
branch:      3.2
parent:      75778:613919591a05
user:        Georg Brandl <georg at python.org>
date:        Sat Mar 17 16:58:05 2012 +0100
summary:
  Closes #14306: clarify expensiveness of try-except and update code snippet

files:
  Doc/faq/design.rst |  10 +++++-----
  1 files changed, 5 insertions(+), 5 deletions(-)


diff --git a/Doc/faq/design.rst b/Doc/faq/design.rst
--- a/Doc/faq/design.rst
+++ b/Doc/faq/design.rst
@@ -284,8 +284,9 @@
 How fast are exceptions?
 ------------------------
 
-A try/except block is extremely efficient.  Actually catching an exception is
-expensive.  In versions of Python prior to 2.0 it was common to use this idiom::
+A try/except block is extremely efficient if no exceptions are raised.  Actually
+catching an exception is expensive.  In versions of Python prior to 2.0 it was
+common to use this idiom::
 
    try:
        value = mydict[key]
@@ -296,11 +297,10 @@
 This only made sense when you expected the dict to have the key almost all the
 time.  If that wasn't the case, you coded it like this::
 
-   if mydict.has_key(key):
+   if key in mydict:
        value = mydict[key]
    else:
-       mydict[key] = getvalue(key)
-       value = mydict[key]
+       value = mydict[key] = getvalue(key)
 
 For this specific case, you could also use ``value = dict.setdefault(key,
 getvalue(key))``, but only if the ``getvalue()`` call is cheap enough because it

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list