From 09f44140aa317cb06f13f366fd27e19613375734 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Fri, 17 Dec 2010 20:19:50 +0000 Subject: [PATCH] Expand the LBYL glossary entry. --- Doc/glossary.rst | 6 ++++++ Doc/whatsnew/3.2.rst | 2 -- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Doc/glossary.rst b/Doc/glossary.rst index a051fe81b0e..4958d3ba2b6 100644 --- a/Doc/glossary.rst +++ b/Doc/glossary.rst @@ -392,6 +392,12 @@ Glossary the :term:`EAFP` approach and is characterized by the presence of many :keyword:`if` statements. + In a multi-threaded environment, the LBYL approach can risk introducing a + race condition between "the looking" and "the leaping". For example, the + code, ``if key in mapping: return mapping[key]`` can fail if another + thread removes *key* from *mapping* after the test, but before the lookup. + This issue can be solved with locks or by using the EAFP approach. + list A built-in Python :term:`sequence`. Despite its name it is more akin to an array in other languages than to a linked list since access to diff --git a/Doc/whatsnew/3.2.rst b/Doc/whatsnew/3.2.rst index 488ad3b460d..bb3053dfe05 100644 --- a/Doc/whatsnew/3.2.rst +++ b/Doc/whatsnew/3.2.rst @@ -112,8 +112,6 @@ Example of calling the parser on a command string:: >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) - - >>> # parsed variables are stored in the attributes >>> result.action 'deploy' >>> result.targets