"no variable or argument declarations are necessary."

Duncan Booth duncan.booth at invalid.invalid
Wed Oct 5 05:27:04 EDT 2005


Antoon Pardon wrote:

> It also is one possibility to implement writable closures.
> 
> One could for instace have a 'declare' have the effect that
> if on a more inner scope such a declared variable is (re)bound it
> will rebind the declared variable instead of binding a local name.

That is one possibility, but I think that it would be better to use a 
keyword at the point of the assigment to indicate assignment to an outer 
scope. This fits with the way 'global' works: you declare at (or near) the 
assignment that it is going to a global variable, not in some far away part 
of the code, so the global nature of the assignment is clearly visible. The 
'global' keyword itself would be much improved if it appeared on the same 
line as the assignment rather than as a separate declaration.

e.g. something like:

var1 = 0

def f():
  var2 = 0

  def g():
     outer var2 = 1 # Assign to outer variable
     global var1 = 1 # Assign to global



More information about the Python-list mailing list