Help Defining Global Names

后端 未结 6 437
情深已故
情深已故 2021-01-25 22:48

My Code:

def A():
    a = \'A\'

    print a

    return

def B():

    print a + \' in B\'

    return

When B() is entered into the interpeter

相关标签:
6条回答
  • 2021-01-25 23:34

    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.

    0 讨论(0)
  • 2021-01-25 23:40
    a = 'A'    
    def B():    
        print a + ' in B'
    
    0 讨论(0)
  • 2021-01-25 23:40

    Just type like this, no need to create fuction or class :

    global a
    
    a = 'A'
    
    print a 
    
    print a + ' in B'
    
    0 讨论(0)
  • 2021-01-25 23:42
    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.

    0 讨论(0)
  • 2021-01-25 23:42

    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'
    
    0 讨论(0)
  • 2021-01-25 23:46

    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?

    0 讨论(0)
提交回复
热议问题