Nested scopes: why is it weird?

Scott Long scott at swiftview.com
Fri Sep 7 18:11:18 EDT 2001


Paul Prescod wrote:

> Side effects are a fundamental part of Python programming. If they
> weren't, Python wouldn't have the "global" keyword. I think it is great
> that Python requires you to be explicit when you want to overwrite a
> global variable. I think it should similarly reqiure you to be explicit
> when you want to shadow one. Or it could simply disallow the shadowing
> -- it isn't very useful anyhow. Just call the inner a "inner_a".

Maybe get an error for the following?

def a():
  x = 0
  def b():
    x = 1

Something along the lines of "Local variable binding shadows variable
from an enclosing scope"? And then to force it, introduce 'local'
keyword:

def a():
  x = 0
  def b():
    local x # No really, I want my variable to be called 'x'
    x = 1



More information about the Python-list mailing list