[Python-checkins] CVS: python/dist/src/Doc/ref ref5.tex,1.43.2.1,1.43.2.2
Fred L. Drake
fdrake@users.sourceforge.net
Mon, 04 Jun 2001 19:24:29 -0700
Update of /cvsroot/python/python/dist/src/Doc/ref
In directory usw-pr-cvs1:/tmp/cvs-serv7965/ref
Modified Files:
Tag: release21-maint
ref5.tex
Log Message:
Update a "Programmer's note" about lambda forms and scoping to reflect
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.
Index: ref5.tex
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/ref/ref5.tex,v
retrieving revision 1.43.2.1
retrieving revision 1.43.2.2
diff -C2 -r1.43.2.1 -r1.43.2.2
*** ref5.tex 2001/05/09 16:53:19 1.43.2.1
--- ref5.tex 2001/06/05 02:24:26 1.43.2.2
***************
*** 868,876 ****
\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.:
\begin{verbatim}
--- 868,876 ----
\indexii{anonmymous}{function}
! \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}
***************
*** 878,881 ****
--- 878,895 ----
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}}