summaryrefslogtreecommitdiffstats
path: root/Doc/faq
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2012-03-17 15:58:05 (GMT)
committerGeorg Brandl <georg@python.org>2012-03-17 15:58:05 (GMT)
commit12c3cd7c1f090cb055d395a5d54deba955af9d7b (patch)
tree67b090e411a1d274f58c271883f32aae45d2eaa6 /Doc/faq
parentf2123d2db54d661a016f02c5a1a02484d6d79e0d (diff)
downloadcpython-12c3cd7c1f090cb055d395a5d54deba955af9d7b.zip
cpython-12c3cd7c1f090cb055d395a5d54deba955af9d7b.tar.gz
cpython-12c3cd7c1f090cb055d395a5d54deba955af9d7b.tar.bz2
Closes #14306: clarify expensiveness of try-except and update code snippet
Diffstat (limited to 'Doc/faq')
-rw-r--r--Doc/faq/design.rst10
1 files changed, 5 insertions, 5 deletions
diff --git a/Doc/faq/design.rst b/Doc/faq/design.rst
index e45aaaa..87cc942 100644
--- a/Doc/faq/design.rst
+++ b/Doc/faq/design.rst
@@ -284,8 +284,9 @@ Similar methods exist for bytes and bytearray objects.
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 @@ expensive. In versions of Python prior to 2.0 it was common to use this idiom::
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