* lib2.tex (sys): updated sys.std{in,out,err} docs. Added

sys.tracebacklimit.
* tut.tex (Exceptions): change text printed by traceback.
* lib5.tex (audioop): added minmax.
* lib5.tex (audioop.getsample): move wandered paragraph back
* lib3.tex, partparse.py: undo mucking with \nopagebreak (didn't work).
* partparse.py: ignore \nopagebreak command
* ref5.tex: added description of lambda forms.
* ref7.tex: added reference to lambda forms to section on function
  definition.
* lib1.tex: removed lambda as built-in function (it is now a special
  form).  Also removed feature of filter, map, reduce to turn a string
  argument into an anonymous function.
This commit is contained in:
Guido van Rossum 1993-12-17 12:13:53 +00:00
parent 67a5fdbcc2
commit 3cbc16d904
7 changed files with 43 additions and 6 deletions

View File

@ -41,13 +41,14 @@ qua:
latex qua latex qua
dvips qua >qua.ps dvips qua >qua.ps
lib.texi: lib1.tex lib2.tex lib3.tex lib4.tex lib5.tex texipre.dat texipost.dat lib.texi: lib1.tex lib2.tex lib3.tex lib4.tex lib5.tex \
texipre.dat texipost.dat partparse.py
python partparse.py -o @lib.texi lib[1-5].tex python partparse.py -o @lib.texi lib[1-5].tex
mv @lib.texi lib.texi mv @lib.texi lib.texi
.PRECIOUS: lib.texi .PRECIOUS: lib.texi
python-lib.info: lib.texi python-lib.info: lib.texi fix.el
emacs -batch -l fix.el -f save-buffer -kill emacs -batch -l fix.el -f save-buffer -kill
makeinfo +footnote-style end +fill-column 72 +paragraph-indent 0 \ makeinfo +footnote-style end +fill-column 72 +paragraph-indent 0 \
lib.texi lib.texi

View File

@ -604,10 +604,11 @@ object. $x ~\verb\is not\~ y$ yields the inverse truth value.
Boolean operations have the lowest priority of all Python operations: Boolean operations have the lowest priority of all Python operations:
\begin{verbatim} \begin{verbatim}
condition: or_test condition: or_test | lambda_form
or_test: and_test | or_test "or" and_test or_test: and_test | or_test "or" and_test
and_test: not_test | and_test "and" not_test and_test: not_test | and_test "and" not_test
not_test: comparison | "not" not_test not_test: comparison | "not" not_test
lambda_form: "lambda" [parameter_list]: condition
\end{verbatim} \end{verbatim}
In the context of Boolean operations, and also when conditions are In the context of Boolean operations, and also when conditions are
@ -638,6 +639,19 @@ invent a value anyway, it does not bother to return a value of the
same type as its argument, so e.g. \verb\not 'foo'\ yields \verb\0\, same type as its argument, so e.g. \verb\not 'foo'\ yields \verb\0\,
not \verb\''\.) not \verb\''\.)
Lambda forms (lambda expressions) have the same syntactic position as
conditions. They are a shorthand to create anonymous functions; the
expression \verb\lambda\ {\em arguments}\verb\:\ {\em condition}
yields a function object that behaves virtually identical to one
defined with \verb\def\ {\em name}\verb\(\{\em arguments}\verb\) :
return\ {\em condition}. See section \ref{function} for the syntax of
parameter lists. Note that functions created with lambda forms cannot
contain statements.
\label{lambda}
\indexii{lambda}{expression}
\indexii{lambda}{form}
\indexii{anonmymous}{function}
\section{Expression lists and condition lists} \section{Expression lists and condition lists}
\indexii{expression}{list} \indexii{expression}{list}
\indexii{condition}{list} \indexii{condition}{list}

View File

@ -292,6 +292,10 @@ parameters) are bound to the (formal) parameters, as follows:
\indexii{parameter}{formal} \indexii{parameter}{formal}
\indexii{parameter}{actual} \indexii{parameter}{actual}
It is also possible to create anonymous functions (functions not bound
to a name), for immediate use in expressions. This uses lambda forms,
described in section \ref{lambda}.
\begin{itemize} \begin{itemize}
\item \item

View File

@ -604,10 +604,11 @@ object. $x ~\verb\is not\~ y$ yields the inverse truth value.
Boolean operations have the lowest priority of all Python operations: Boolean operations have the lowest priority of all Python operations:
\begin{verbatim} \begin{verbatim}
condition: or_test condition: or_test | lambda_form
or_test: and_test | or_test "or" and_test or_test: and_test | or_test "or" and_test
and_test: not_test | and_test "and" not_test and_test: not_test | and_test "and" not_test
not_test: comparison | "not" not_test not_test: comparison | "not" not_test
lambda_form: "lambda" [parameter_list]: condition
\end{verbatim} \end{verbatim}
In the context of Boolean operations, and also when conditions are In the context of Boolean operations, and also when conditions are
@ -638,6 +639,19 @@ invent a value anyway, it does not bother to return a value of the
same type as its argument, so e.g. \verb\not 'foo'\ yields \verb\0\, same type as its argument, so e.g. \verb\not 'foo'\ yields \verb\0\,
not \verb\''\.) not \verb\''\.)
Lambda forms (lambda expressions) have the same syntactic position as
conditions. They are a shorthand to create anonymous functions; the
expression \verb\lambda\ {\em arguments}\verb\:\ {\em condition}
yields a function object that behaves virtually identical to one
defined with \verb\def\ {\em name}\verb\(\{\em arguments}\verb\) :
return\ {\em condition}. See section \ref{function} for the syntax of
parameter lists. Note that functions created with lambda forms cannot
contain statements.
\label{lambda}
\indexii{lambda}{expression}
\indexii{lambda}{form}
\indexii{anonmymous}{function}
\section{Expression lists and condition lists} \section{Expression lists and condition lists}
\indexii{expression}{list} \indexii{expression}{list}
\indexii{condition}{list} \indexii{condition}{list}

View File

@ -292,6 +292,10 @@ parameters) are bound to the (formal) parameters, as follows:
\indexii{parameter}{formal} \indexii{parameter}{formal}
\indexii{parameter}{actual} \indexii{parameter}{actual}
It is also possible to create anonymous functions (functions not bound
to a name), for immediate use in expressions. This uses lambda forms,
described in section \ref{lambda}.
\begin{itemize} \begin{itemize}
\item \item

View File

@ -1760,7 +1760,7 @@ however, and result in error messages as shown here:
\bcode\small\begin{verbatim} \bcode\small\begin{verbatim}
>>> 10 * (1/0) >>> 10 * (1/0)
Stack backtrace (innermost last): Traceback (innermost last):
File "<stdin>", line 1 File "<stdin>", line 1
ZeroDivisionError: integer division or modulo ZeroDivisionError: integer division or modulo
>>> 4 + foo*3 >>> 4 + foo*3

View File

@ -1760,7 +1760,7 @@ however, and result in error messages as shown here:
\bcode\small\begin{verbatim} \bcode\small\begin{verbatim}
>>> 10 * (1/0) >>> 10 * (1/0)
Stack backtrace (innermost last): Traceback (innermost last):
File "<stdin>", line 1 File "<stdin>", line 1
ZeroDivisionError: integer division or modulo ZeroDivisionError: integer division or modulo
>>> 4 + foo*3 >>> 4 + foo*3