[Python-Dev] Explicit Lexical Scoping (pre-PEP?)
Andrew Koenig
ark at acm.org
Tue Jul 4 16:16:59 CEST 2006
> Borrowing from Perl, the keyword 'my' is used to declare an explicitly
> scoped variable:
>
> def f1():
> my x = 1
> def f2():
> x = 2 # Does not create a new x
>
> In the above example, the statement 'my x = 1' declares that the scope
> of the variable 'x' is the outer function f1. Any assignment to x will
> modify the existing x, rather than creating a new definition.
-1, for this reason:
def f()
x = 2 # Does this create a local variable?
Today, the answer is yes. Under this proposal, you can't answer the
question without inspecting the entire context in which f is defined.
For that reason, I would much rather have the first assignment in a block
say explicitly whether it is intended to create a local variable:
def f1():
x = 1
def f2():
global x
x = 2 # Does not create a new x
This might even be abbreviated:
def f1():
x = 1
def f2():
global x = 2 # Equivalent to the last example above
More information about the Python-Dev
mailing list