python3 局部变量、非局部变量和全局变量的区别

2018-08-11  本文已影响0人  诸葛小愚

最近在看python中nonlocal和global的使用,参考网上的大作,写了点自己的心得。有不完善的地方,还请不吝赐教。

spam='hello' #这是一个全局变量
def test():
    def do_local():
        spam='do_local'#创建一个局部变量

    def do_nonlocal():
        #变量用在嵌套作用域上
        nonlocal spam
        spam='do_nolocal'

    def do_global():
        #可以访问和修改全局变量,如果没有则创建一个全局变量
        global spam
        spam='do_global'

    spam='hello world'
    print('before do anything :',spam)
    do_local()
    print('after do_local: ',spam)
    do_nonlocal()
    print('after do_nonlocal: ',spam)
    do_global()
    print('after do_global: ',spam)
test()
print('全局变量',spam)
print(dir())#查看定义的全局变量

程序运行结果:

before do anything : hello world
after do_local:  hello world
after do_nonlocal:  do_nolocal
after do_global:  do_nolocal
全局变量 do_global
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'spam', 'test']
上一篇下一篇

猜你喜欢

热点阅读