[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}}