problem with 'global'
Mel
mwilson at the-wire.com
Sun Jan 20 23:09:32 EST 2008
oyster wrote:
> why the following 2 prg give different results? a.py is ok, but b.py
> is 'undefiend a'
> I am using Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC
> v.1310 32 bit (Intel)] on win32
> #a.py
> def run():
> if 1==2: # note, it always False
> global a
> a=1
>
> run()
> a
>
> #b.py
> def run():
> a=1
>
> run()
> a
The docs seem to be in <http://www.python.org/doc/2.4/ref/global.html>
but don't look all that helpful. Probably the key is that global is
not an executable statement, and isn't affected by being subordinate
to an if statement. In a.py the function has been primed to define a
in the global namespace. In b.py, not.
Docs do describe global as a "directive to the parser", even though
it's lumped in with normal statements like print, return, yield,
raise, etc.
Mel.
More information about the Python-list
mailing list