8、nonlocal和global的区别

一:global关键字用来在函数或其它局部作用域中使用全局变量。但是如果不使用全局变量也可以不适用global关键字声明。
二:nonlocal关键字用来在函数或其它作用域中使用外层(非全局)变量

def scope_test():
    def do_local():
        spam = "local spam"  # 局部变量不会改变scope_test的spam值

    def do_nonlocal():
        nonlocal spam  # nonlocal 它会改变scope_test的spam值
        spam = "nonlocal spam"

    def do_global():
        global spam  # 会改变模块层级的绑定
        spam = "global spam"

    spam = "test spam"
    do_local()
    print("1:", spam)
    do_nonlocal()
    print("2:", spam)
    do_global()
    print("3:", spam)


scope_test()
print("4:", spam)

结果:

1: test spam
2: nonlocal spam
3: nonlocal spam
4: global spam
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容