[Python-ideas] Before and after the colon in funciton defs.
Adam Jorgensen
adam.jorgensen.za at gmail.com
Mon Sep 19 06:45:11 CEST 2011
It looks ugly and it's not so obvious what the : is associated with
-1
On 18 September 2011 22:58, Ron Adam <ron3200 at gmail.com> wrote:
> On Sun, 2011-09-18 at 15:32 -0400, Jim Jewett wrote:
> > On Sat, Sep 17, 2011 at 2:16 AM, Nick Coghlan <ncoghlan at gmail.com>
> wrote:
> >
> > > Specifically targeting existing uses of the default argument hack, on
> > > the other hand, comes with at least 3 already known use cases (i.e.
> > > name lookup micro-optimisation, early binding semantics and shared
> > > state for algorithms). People already tolerate messing with the
> > > function signature to obtain those behaviours, so it's reasonable to
> > > wonder if it is possible to provide a cleaner way to obtain the same
> > > effect. A simple set of definition time name bindings would likely
> > > suffice without greatly increasing the language complexity or the
> > > runtime overhead of function calls.
> >
> > Since the goal is to add some context, like a wrapper, it seems
> > reasonable to use a specialization of @. @+ suggests adding something
> > to the environment, and won't be ambiguous unless numbers become
> > callable.
> >
> > @+tuple=tuple
> > @+sorted=sorted
> > @+len=len
> > @+KeyError=KeyError
> > def decorating_function(user_function):
> >
> > I would personally be fine with a restriction to @+name=<expr> but I
> > suppose others might prefer a tuple, like
> >
> >
> > @+(tuple, sorted, len, KeyError)=(tuple, sorted, len, KeyError)
> > def decorating_function(user_function):
>
> If there was a method on a function object to set default values, then
> you could use a regular decorator.
>
> # Most likely to live in functools
>
> def preset(**kwds):
> def apply(f):
> f.set_default_values(kwds)
> return f
> return apply
>
> #---------------------------------
> from functools import preset
>
> @preset(tuple=tuple, sorted=sorted, len=len, keyerror=keyerror)
> def foo(...):
> ...
>
> I was hoping there might be a more direct way to do it. My previous
> idea breaks the white space consistency, and Nicks idea adds special
> syntax. Decorators with long arguments make the function name stand out
> less.
>
> Is there a more recent patch for Pep 362?
>
> Pep 362 seems to be targeted at only introspection and really isn't a
> part of the function object. Is that correct?
>
> Cheers,
> Ron
>
>
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20110919/7e0cc13f/attachment.html>
More information about the Python-ideas
mailing list