Thanks for all the replys.
"Diez B. Roggisch 写道: " > hollowspook schrieb: > > def aa(): > > global b > > b=b+1 > > print b > > > > b=1 > > aa() > > > > The above code runs well in python shell. > > > > However I have a problem as follows. > > > > new a file named test.py > > ------------------------------------------------------------------------ > > > > def aa(): > > global b > > b=b+1 > > print b > > ------------------------------------------------------------------------- > > > > Then in python shell, > > > > from test import * > > b=1 > > aa() > > > > The error message is : > > Traceback (most recent call last): > > File "<interactive input>", line 1, in ? > > File "test.py", line 3, in aa > > b=b+1 > > NameError: global name 'b' is not defined > > > > Why this happens? Please do me a favor. > > Because python does not know "real" globals - globals are always only > global on a module level. Now using the "from module import *"-syntax > asks for trouble. Because your global b above is global to the > __main__-module, not to the module test. But the aa-function expects it > to live in tests. > > To make your example work, do it as this: > > import test > > test.b = 1 > test.aa() > > > See > http://effbot.org/pyfaq/tutor-whats-the-difference-between-import-foo-and-from-foo-import.htm > > Diez
-- http://mail.python.org/mailman/listinfo/python-list