Search code examples
pythonfunction-calls

Help Defining Global Names


My Code:

def A():
    a = 'A'

    print a

    return

def B():

    print a + ' in B'

    return

When B() is entered into the interpeter I get

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "<module1>", line 9, in B
NameError: global name 'a' is not defined

How should I go about defining a? I want the end result to be 'A in B', when B() is entered into the interpreter

edit: I'd like to keep the definition of a within A() if possible.


Solution

  • 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.