My Code:
def A():
a = \'A\'
print a
return
def B():
print a + \' in B\'
return
When B() is entered into the interpeter
i'm pretty new to Python and you might want to take thes following with a grain of salt, but did you consider to have your variable a and the functions A() and B() as members of a class?
class myClass(object):
def __init__(self):
self.a = ''
def A(self):
self.a = 'A'
print self.a
def B(self):
print self.a + ' in B'
def main():
stuff = myClass()
stuff.A()
stuff.B()
if __name__ == '__main__':
main()
When i save the code above in a file and run it, it seems to work as expected.
a = 'A'
def B():
print a + ' in B'
Just type like this, no need to create fuction or class :
global a
a = 'A'
print a
print a + ' in B'
def A():
global a
a = 'A'
print a
def B():
global a
print a + ' in B'
A()
B()
this prints:
A
A in B
BTW: You never need a plain "return" at the end of a function.
check out my answer from this SO question. Basically:
Create a new module containing only global data (in your case let's say myGlobals.py
):
# create an instance of some data you want to share across modules
a=0
and then each file you want to have access to this data can do so in this fashion:
import myGlobals
myGlobals.a = 'something'
so in your case:
import myGlobals
def A():
myGlobals.a = 'A'
print myGlobals.a
def B():
print myGlobals.a + ' in B'
You can do this by using the global
keyword:
def A():
global a
a = 'A'
def B():
global a
# ...
However, using global variables is generally a bad idea - are you sure there's not a better way to do what you want to do?