Why can function definitions only use identifiers, and not attribute references or any other primaries?
Gary Herron
gherron at islandtraining.com
Thu Apr 23 11:18:42 EDT 2009
Jeremy Banks wrote:
> Thanks for your comments.
>
> On Thu, Apr 23, 2009 at 11:52, Gary Herron <gherron at islandtraining.com> wrote:
>
>>> [...]
>>>
>> There's no need for a specific addition to the syntax to do this.
>>
>> Try this:
>>
>> def foo_bar():
>> return(...)
>> foo.bar = foo_bar
>>
>>
>>> [...]
>>>
>> and this:
>>
>> def foo_bar():
>> return(...)
>> foo["bar"] = foo_bar
>>
>>
>
> I understand that this is possible now, but I just don't see why it's
> necessary to do it at all.
>
>
>>> In this case I could see there being a problem in that there's nothing
>>> to get the function's __name__ from, but that doesn't apply for the
>>> first example.
>>>
>>>
>> Not sure what you mean here.
>>
>
> >>> def foo(): pass
> ...
> >>> bar = foo
> >>> bar.__name__
> 'foo'
> >>>
>
> If I defined foo.bar it would know that the method name was "bar", but
> if I defined foo["bar"] there's be no clear identifier to use for the
> function's name. I don't see this as a great problem, since anonymous
> functions already exist, but I thought it was worth acknowledging.
>
> To be clear, I don't see this as a serious fault in the language, but
> as an unnecessary restriction that makes code a little less direct
> than it could be.
>
Things like your suggestion are called "syntactic-sugar" -- syntax that
adds a convenience, but *no* new functionality. Python has plenty of
"syntactic-sugar"s, and more will be added in the future. To make an
argument for such an addition, one would have to describe some
compelling (and general) use cases in a well-argued PEP. You're welcome
to try, but be forewarned, most PEP's (especially syntax changing PEPs)
don't fly far.
> --
> http://mail.python.org/mailman/listinfo/python-list
>
More information about the Python-list
mailing list