On Wed, Sep 11, 2013 at 10:50 PM, chandan kumar <chandan_...@yahoo.co.in> wrote:
> In Test2.py file I wanted to print the global value ,Debug_Value as 10.I'm 
> not getting expected result.Please can any one point where exactly i'm doing 
> wrong.
>
> Similarly , how can i use global variable  inside a class and use the same 
> value of global variable in different class?Is that possible?if Yes please 
> give me some pointers on implementing.

Python simply doesn't have that kind of global. What you have is
module-level "variables" [1] which you can then import. But importing
is just another form of assignment:

# Test1.py
Debug_Value = " "

# Test2.py
from Test1 import *
# is exactly equivalent to
Debug_Value = " "

It simply sets that in Test2's namespace. There's no linkage across.
(By the way, I strongly recommend NOT having the circular import that
you have here. It'll make a mess of you sooner or later; you actually,
due to the way Python loads things, have two copies of one of your
modules in memory.) When you then reassign to Debug_Value inside
Test1, you disconnect it from its previous value and connect it to a
new one, and the assignment in the other module isn't affected.

Here's a much simpler approach:

# library.py
foo = 0

def bar():
    global foo
    foo += 1


# application.py
import library

library.bar()
print(library.foo)


This has a simple linear invocation sequence: you invoke the
application from the command line, and it calls on its library. No
confusion, no mess; and you can reference the library's globals by
qualified name. Everything's clear and everything works.

ChrisA

[1] They're not really variables, they're name bindings. But close
enough for this discussion.
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to