Code block function syntax, anonymous functions decorator

Diez B. Roggisch deets at nospam.web.de
Thu Feb 7 03:48:25 EST 2008


Jean-Paul Calderone schrieb:
> On Wed, 06 Feb 2008 23:59:27 +0100, "Diez B. Roggisch" 
> <deets at nospam.web.de> wrote:
>> castironpi at gmail.com schrieb:
>>> def run3( block ):
>>>    for _ in range( 3 ):
>>>       block()
>>>
>>> run3():
>>>    normal_suite()
>>>
>>> Introduces new syntax; arbitrary functions can follow 'colon'.
>>>
>>> Maintains readability, meaning is consistent.
>>>
>>> Equivalent to:
>>>
>>> def run3( block ):
>>>    for _ in range( 3 ):
>>>       block()
>>>
>>> @run3
>>> def anonfunc():
>>>    normal_suite()
>>>
>>> Simplification in cases in which decorators are use often.
>>
>> This is non-sensical - how do you invoke anonfunc? They would all bind
>> to the same name, run3. Or to no name as all, as your "spec" lacks that.
> 
> As he said, the decorator version is the _equivalent_ to the syntax he
> was proposing.  The point isn't to decorate the function, so perhaps he
> shouldn't have used decorator syntax, but instead:
> 
>    def anonfunc():
>        normal_suite()
>    run3(anonfunc)
>    del anonfunc
> 
> So it's not non-sensical.  It's a request for a piece of syntax.
> 
>>
>> Besides, it's butt-ugly IMHO. But taste comes after proper definition...
> 
> It's properly defined.  Not that I'm endorsing this or anything.  I'd
> rather not see half-assed syntax proposals at all, even if they're super
> great (and some of the syntax that's made it into Python is much worse
> than this).

Yeah, I missed somehow that the decorator doesn't actually return anything.

Diez



More information about the Python-list mailing list