Python or Java or maybe PHP?
Xavier Morel
xavier.morel at masklinn.net
Fri Jan 6 11:35:01 EST 2006
Alex Martelli wrote:
> Xavier Morel <xavier.morel at masklinn.net> wrote:
> ...
>> Wouldn't it be possible to change the `def` statement to return a
>> reference to the function, and allow omitting the function name thereby
>> bypassing the default binding (current behavior)?
>
> It's _possible_ (doesn't introduce syntax ambiguities) though it does
> introduce incompatible interactive-interpreter behavior, as you say:
>
>> >>> # Extended behavior
>> >>> # returns a reference to the function
>> >>> def foo(*args, **kwargs):
>> pass
>> <function at 0x00FA37B0>
>
> This could be avoided if 'def <name><etc>' remained a statement like
> today, and a separate expression 'def<etc>' returned a function object
> as a result; this would have the aded plus of avoiding the totally new
> (to Python) idea of "statement returning a value" (_expressions_ return
> a value).
>
True that, I didn't even consider the possibility to create an
independent expression.
And it completely remove the possibility to generate the first "con".
>> * May allow for blocks-like constructs (I'm not sure of the current
>> state of the closures over Python functions though, these may have to be
>> extended to "full" closures if they aren't) and be considered by some as
>
> Python's closures are 'full', but don't allow inner functions to rebind
> names in the namespace of outer functions.
>
> I'm not sure a PEP like this has ever been proposed, but the idea of
> anonymous def is not new (bar some details of your proposal): if a PEP
> doesn't exist, you could write one, at least to firm up all details.
>
>
> Alex
Or maybe start by creating a thread on the subject of an anonymous def
expression on this list first?
More information about the Python-list
mailing list