Use "lambda expression" as preferred to "lambda form".

This commit is contained in:
Georg Brandl 2013-10-06 10:26:58 +02:00
parent d6d26ec908
commit cff39b0120
4 changed files with 16 additions and 17 deletions

View File

@ -372,20 +372,20 @@ Answer 2: Fortunately, there is `Stackless Python <http://www.stackless.com>`_,
which has a completely redesigned interpreter loop that avoids the C stack.
Why can't lambda forms contain statements?
------------------------------------------
Why can't lambda expressions contain statements?
------------------------------------------------
Python lambda forms cannot contain statements because Python's syntactic
Python lambda expressions cannot contain statements because Python's syntactic
framework can't handle statements nested inside expressions. However, in
Python, this is not a serious problem. Unlike lambda forms in other languages,
where they add functionality, Python lambdas are only a shorthand notation if
you're too lazy to define a function.
Functions are already first class objects in Python, and can be declared in a
local scope. Therefore the only advantage of using a lambda form instead of a
local scope. Therefore the only advantage of using a lambda instead of a
locally-defined function is that you don't need to invent a name for the
function -- but that's just a local variable to which the function object (which
is exactly the same type of object that a lambda form yields) is assigned!
is exactly the same type of object that a lambda expression yields) is assigned!
Can Python be compiled to machine code, C or some other language?

View File

@ -509,14 +509,14 @@ receiving any excess positional parameters, defaulting to the empty tuple. If
the form "``**identifier``" is present, it is initialized to a new dictionary
receiving any excess keyword arguments, defaulting to a new empty dictionary.
.. index:: pair: lambda; form
.. index:: pair: lambda; expression
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`. Note that the lambda form is merely a shorthand for a
name), for immediate use in expressions. This uses lambda expressions, described in
section :ref:`lambda`. Note that the lambda expression is merely a shorthand for a
simplified function definition; a function defined in a ":keyword:`def`"
statement can be passed around or assigned to another name just like a function
defined by a lambda form. The ":keyword:`def`" form is actually more powerful
defined by a lambda expression. The ":keyword:`def`" form is actually more powerful
since it allows the execution of multiple statements.
**Programmer's note:** Functions are first-class objects. A "``def``" form

View File

@ -184,7 +184,7 @@ brackets:
list_comprehension: `expression` `list_for`
list_for: "for" `target_list` "in" `old_expression_list` [`list_iter`]
old_expression_list: `old_expression` [("," `old_expression`)+ [","]]
old_expression: `or_test` | `old_lambda_form`
old_expression: `or_test` | `old_lambda_expr`
list_iter: `list_for` | `list_if`
list_if: "if" `old_expression` [`list_iter`]
@ -1255,7 +1255,7 @@ Conditional Expressions
.. productionlist::
conditional_expression: `or_test` ["if" `or_test` "else" `expression`]
expression: `conditional_expression` | `lambda_form`
expression: `conditional_expression` | `lambda_expr`
Conditional expressions (sometimes called a "ternary operator") have the lowest
priority of all Python operations.
@ -1275,14 +1275,13 @@ Lambdas
.. index::
pair: lambda; expression
pair: lambda; form
pair: anonymous; function
.. productionlist::
lambda_form: "lambda" [`parameter_list`]: `expression`
old_lambda_form: "lambda" [`parameter_list`]: `old_expression`
lambda_expr: "lambda" [`parameter_list`]: `expression`
old_lambda_expr: "lambda" [`parameter_list`]: `old_expression`
Lambda forms (lambda expressions) have the same syntactic position as
Lambda expressions (sometimes called lambda forms) have the same syntactic position as
expressions. They are a shorthand to create anonymous functions; the expression
``lambda arguments: expression`` yields a function object. The unnamed object
behaves like a function object defined with ::
@ -1291,7 +1290,7 @@ behaves like a function object defined with ::
return expression
See section :ref:`function` for the syntax of parameter lists. Note that
functions created with lambda forms cannot contain statements.
functions created with lambda expressions cannot contain statements.
.. _exprlists:

View File

@ -546,7 +546,7 @@ Lambda Expressions
Small anonymous functions can be created with the :keyword:`lambda` keyword.
This function returns the sum of its two arguments: ``lambda a, b: a+b``.
Lambda forms can be used wherever function objects are required. They are
Lambda functions can be used wherever function objects are required. They are
syntactically restricted to a single expression. Semantically, they are just
syntactic sugar for a normal function definition. Like nested function
definitions, lambda functions can reference variables from the containing