[Python-Dev] closure semantics

Delaney, Timothy C (Timothy) tdelaney at avaya.com
Fri Oct 24 04:11:01 EDT 2003


> From: Moore, Paul [mailto:Paul.Moore at atosorigin.com]
> > From: Delaney, Timothy C (Timothy) [mailto:tdelaney at avaya.com]
>> > global <name> [in <scope>]
> >
> > where <scope> default to the current module.
>> This made me think. What should be the effect of
>> def f():
> x = 12
> def g():
> global y in f
> y = 12
> g()
> print locals()
>> I suspect the answer is "it's illegal". But by extension from 
> the current
> behaviour of "global", it should create a local variable in f.

My understanding of (all) the proposals, and what I would expect, is identical semantics to the current 'global', but the affected scope.
So yes, the above should create a local name `y` in `f`. The local name `y` would be allocated at compile time, just like any other local name.
Likewise, the following should be illegal:
 def f():
 x = 12
 y = 1
 def g():
 global y in f
 y = 12
 g()
 print locals()
because the global statement occurs after a local binding of the name.
Tim Delaney


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /