• (一)Python入门-5函数:10nonlocal-global-LEGB规则


    一:nonlocal关键字

      nonlocal 用来声明外层的局部变量。

      global 用来声明全局变量。

    #测试nonlocal、global关键字的用法
    
    a = 100
    def outer():
        b = 10
        def inner():
            nonlocal b      #声明外部函数的局部变量
            print('inner:b',b)
            b = 20      #内部函数中修改了外部函数变量b的值
    
        global a    #声明全局变量
        a = 200
    
        inner()
        print('outer:b',b)
    
    outer()
    print('a:',a)

    运行结果:

      inner:b 10
      outer:b 20
      a: 200

    二:LEGB规则

      Python在查找“名称”时,是按照LEGB规则查找的: Local-->Enclosed-->Global-->Built in

        Local 指的就是函数或者类的方法内部

        Enclosed 指的是嵌套函数(一个函数包裹另一个函数,闭包)

        Global 指的是模块中的全局变量

        Built in 指的是Python为自己保留的特殊名称。

      如果某个name映射在局部(local)命名空间中没有找到,接下来就会在闭包作用域 (enclosed)进行搜索,如果闭包作用域也没有找到,Python就会到全局(global)命名空 间中进行查找,最后会在内建(built-in)命名空间搜索 (如果一个名称在所有命名空间 中都没有找到,就会产生一个NameError)。

    #测试LEGB
    
    str = "global"
    def outer():
        #str = "outer"
        def inner():
            #str = "inner"
            print(str)
        inner()
    
    outer()
  • 相关阅读:
    算法分析实验题集
    程序猿怎样解除烦恼
    MYSQL设计优化
    模式匹配KMP
    ios创建画笔的样例(双笔画效果)
    命令行解析器
    作业还是作孽?——Leo鉴书79
    客户机增加域 及server文件共享
    MySQL教程及经常使用命令1.1
    jsTree插件简介(三)
  • 原文地址:https://www.cnblogs.com/jack-zh/p/10841693.html
Copyright © 2020-2023  润新知