python世界里的局部变量和全局变量: 潜规则太重要了!!!

python世界里的局部变量和全局变量: 潜规则太重要了!!!

先上代码:


def fun():    
    def test_global():
        '''
        内层和外层都需要声明为global, 才能彻底打通变量名和值的一致性
        '''
        global a
        a=9
        def f():
            global a
            a= a*a
            print('a={} in 内层函数里'.format(a))
        f()
        print ('a={} in test_global()'.format(a))
        print(id(a)) # 全局域的
        print()
        
    def test_global2():
        #global a
        a=9 # 局部域的
        print( id(a))
        def f():
            global a #全局域的
            print(id(a))
            a= a*a
            print('\na={} in 内层函数里'.format(a))
        f()
        print ('a={} in test_global2()'.format(a))

    test_global()
    test_global2()
    print('a={}'.format(a))
fun()

'''
a=81 in 内层函数里
a=81 in test_global()

a=6561 in 内层函数里
a=9 in test_global2()
a=6561
'''
    

猜你喜欢

转载自www.cnblogs.com/duan-qs/p/11937874.html