The future of Python immutability

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Sat Sep 5 19:38:29 EDT 2009


On Sat, 05 Sep 2009 14:09:57 -0700, Adam Skutt wrote:

>> Python does not have lambda objects. It has lambda expressions that
>> produce function objects identical except for .__name__ to the
>> equivalent def statement output.
>
> Sure sounds like python has lambda objects to me then... the fact
> they're a special case of some more general construct is mostly
> semantics, /especially/ in the context of the point I was actually
> making, no?

No. Lambdas are a *syntactical construct*, not an object. You wouldn't 
talk about "while objects" and "if objects" and "comment objects" 
*because they're not objects*. Neither are lambdas -- they're syntax, 
which creates ordinary functions:

>>> def f(x):
...     return x
...
>>> g = lambda x: x
>>> type(f) is type(g)
True


Functions created with def and functions created with lambda are 
*precisely* the same type of object. There is no such thing as a "lambda 
object" which is a "special case" of ordinary functions, there are just 
functions.



-- 
Steven



More information about the Python-list mailing list