• 技术文章 >后端开发 >Python教程

    Python nonlocal与global关键字解析说明

    高洛峰高洛峰2017-03-12 10:49:22原创1326

    nonlocal

    首先,要明确 nonlocal 关键字是定义在闭包里面的。请看以下代码:

    x = 0
    def outer():
        x = 1
        def inner():
            x = 2
            print("inner:", x)
    
        inner()
        print("outer:", x)
    
    outer()
    print("global:", x)

    结果

    # inner: 2
    # outer: 1
    # global: 0

    现在,在闭包里面加入nonlocal关键字进行声明:

    x = 0
    def outer():
        x = 1
        def inner():
            nonlocal x
            x = 2
            print("inner:", x)
    
        inner()
        print("outer:", x)
    
    outer()
    print("global:", x)

    结果

    # inner: 2
    # outer: 2
    # global: 0

    看到区别了么?这是一个函数里面再嵌套了一个函数。当使用 nonlocal 时,就声明了该变量不只在嵌套函数inner()里面
    才有效, 而是在整个大函数里面都有效。

    global

    还是一样,看一个例子:

    x = 0
    def outer():
        x = 1
        def inner():
            global x
            x = 2
            print("inner:", x)
    
        inner()
        print("outer:", x)
    
    outer()
    print("global:", x)

    结果

    # inner: 2
    # outer: 1
    # global: 2

    global 是对整个环境下的变量起作用,而不是对函数类的变量起作用。

    以上就是Python nonlocal与global关键字解析说明的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Python nonlocal global
    上一篇:图文详解python三层架构 下一篇:python自动化基本技术原理
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 简单学习Python字符和列表(实例详解)• 图文详解怎么用Python绘制动态可视化图表• 介绍六个超好用的Python内置函数• 一起聊聊Python的编码样式• 带你搞懂Python反序列化
    1/1

    PHP中文网