On Thu, Nov 19, 2015 at 5:45 AM, Steven D'Aprano <st...@pearwood.info> wrote:
> But if you want the default value to be evaluated exactly once, and once
> only, there is no real alternative to early binding. You could use a global
> variable, of course, but that is no solution -- that's a problem waiting to
> happen.

It doesn't have to be a global. In a Python with late binding
defaults, this would work to get early binding:

def f(x=f.default_x):
    ...

f.default_x = something()

Of course, assignment to function attributes is a relatively modern
thing that is only permitted since Python 2.1, whereas function
defaults have been around since at least 1.4, so this wouldn't have
been an option when the semantics were being determined.
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to