]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Update a "Programmer's note" about lambda forms and scoping to reflect
authorFred Drake <fdrake@acm.org>
Tue, 5 Jun 2001 02:24:26 +0000 (02:24 +0000)
committerFred Drake <fdrake@acm.org>
Tue, 5 Jun 2001 02:24:26 +0000 (02:24 +0000)
the availability of nested scoping in Python 2.1.

Note that this is a slightly different patch than was applied to the trunk
of the development for Python 2.2.

Doc/ref/ref5.tex

index f2a1d1b58cba731e7f068a851e41133f2b0a5d07..b9eaad2464c67553d67732ddff65d5b3ef8c262b 100644 (file)
@@ -867,17 +867,31 @@ that functions created with lambda forms cannot contain statements.
 \indexii{lambda}{form}
 \indexii{anonmymous}{function}
 
-\strong{Programmer's note:} a lambda form defined inside a function
-has no access to names defined in the function's namespace.  This is
-because Python has only two scopes: local and global.  A common
-work-around is to use default argument values to pass selected
-variables into the lambda's namespace, e.g.:
+\strong{Programmer's note:} Prior to Python 2.1, a lambda form defined
+inside a function has no access to names defined in the function's
+namespace.  This is because Python had only two scopes: local and
+global.  A common work-around was to use default argument values to
+pass selected variables into the lambda's namespace, e.g.:
 
 \begin{verbatim}
 def make_incrementor(increment):
     return lambda x, n=increment: x+n
 \end{verbatim}
 
+Python 2.1 introduced nested scopes as an optional feature, and this
+work-around has not been necessary when the feature is enabled.  The
+use of nested scopes is enabled by the statement \samp{from __future__
+import nested_scopes}; future versions of Python will enable nested
+scopes by default.  This version works starting with Python 2.1:
+
+\begin{verbatim}
+from __future__ import nested_scopes
+
+def make_incrementor(increment):
+    return lambda x: x+increment
+\end{verbatim}
+
+
 \section{Expression lists\label{exprlists}}
 \indexii{expression}{list}