[Python-ideas] Tweaking closures and lexical scoping to include the function being defined

Paul Moore p.f.moore at gmail.com
Wed Sep 28 09:10:04 CEST 2011


On 28 September 2011 01:56, Bruce Leban <bruce at leapyear.org> wrote:
> And it made
> me realize it would be weird if (to use one possible bikeshed color):
>     own x = y
> was not the same as
>     own x
>     x = y
> but I don't see how these can possibly be the same. You need the first case
> to do one time initialization and you must be able to change the value as in
> the second case or the feature is useless.

Equally to the point, if a function has

    own x = 1
    x = 1

it is *not* valid to remove the second line, as it runs at a different
time (runtime rather than define time). That is very weird.

Between these points and Arnaud Delobelle's point that code inside a
function should do nothing when the def itself is executed, I'm
getting more convinced that objects with persistent local scope should
be introduced *outside* the function body.

That either validates the default-argument hack as a valid response to
a specific requirement, or suggests some syntax added to the function
definition line. Or of course, just go with a normal (nested function)
closure.

Paul.



More information about the Python-ideas mailing list