Code block function syntax, anonymous functions decorator

castironpi at gmail.com castironpi at gmail.com
Thu Feb 7 20:13:33 EST 2008


On Feb 7, 2:48 am, "Diez B. Roggisch" <de... at nospam.web.de> wrote:
> Jean-Paul Calderone schrieb:
>
>
>
>
>
> > On Wed, 06 Feb 2008 23:59:27 +0100, "Diez B. Roggisch"
> > <de... at nospam.web.de> wrote:
> >> castiro... 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- Hide quoted text -
>
> - Show quoted text -

Even to myself, the idea is not sounding too bad.  You could require
that the function have a 'codeblock' argument, (but that goes against
pythonic "self" style customs), or pass it as an implicit first
parameter.  Hybrid context manager and function.



More information about the Python-list mailing list