Is it explicitly specified?

George Sakkis george.sakkis at gmail.com
Mon Feb 4 17:36:56 CET 2008


On Feb 4, 6:53 am, André Malo <auch-ic... at g-kein-spam.com> wrote:
> * Steven D'Aprano wrote:
> > On Sun, 03 Feb 2008 15:31:49 -0800, Paul Boddie wrote:
>
> >> I don't know whether I can offer much better advice than others, but I
> >> have noticed that a lot of my own code has moved in the direction of not
> >> having specific default values in function/method signatures. So,
> >> instead of this...
>
> >>   def f(x=123):
> >>     ...
>
> >> ...I have this:
>
> >>   def f(x=None):
> >>     if x is None:
> >>       x = 123
>
> > For the love of Pete, WHY??????
>
> > I understand why you would do it for a mutable default, but immutable???
>
> I'm observing myself doing the same, for the following reason:
>
> Consider the function being part of a bigger system, where it's called from
> another function or method which should "inherit" the default value of the
> function, like:
>
> def g(foo, bar, x=None):
>    ...
>    f(x=x)
>
> Now if you change the default value of f(x) for some reason, you don't have
> to wind up all the possible caller signatures to reflect that change.

You might find handy a decorator I've written exactly for this
scenario, reusing default arguments across functions:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/440702

George



More information about the Python-list mailing list