Code block function syntax, anonymous functions decorator

Jean-Paul Calderone exarkun at divmod.com
Wed Feb 6 18:45:00 EST 2008


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).

Jean-Paul



More information about the Python-list mailing list