ast wrote: > Hello > > Here is my module tmp.py: > > a=0 > > def test(): > global a > print(a) > a+=1 > > If I import function "test" from module "tmp" with: > >>>> from tmp import test > > it works > >>>> test() > 0 >>>> test() > 1 > > But where variable "a" is located ? I can't find it anywhere
The function keeps a reference to the global namespace of the tmp module. >>> from tmp import test >>> test.__globals__["a"] 0 >>> test() 0 >>> test.__globals__["a"] 1 The module is cached; thus a subsequent import gives the same function and of course accesses the same global namespace: >>> from tmp import test as test2 >>> test is test2 True >>> test2() 1 When you remove the module from the cache (usually a bad idea, done here for demonstration purposes) you will get a new function and a new global namespace: >>> import sys >>> del sys.modules["tmp"] >>> from tmp import test as test3 >>> test is test3 False >>> test() 2 >>> test3() 0 -- https://mail.python.org/mailman/listinfo/python-list