zoukankan      html  css  js  c++  java
  • (一)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()
  • 相关阅读:
    div居中鼠标悬浮显示下拉列表
    javascript循环
    javascript函数
    javascript时间、随机数
    javascript外部使用
    Javascript 探路
    CSS六大选择器(注释css表里不能加注释!!)
    框架链接
    Jmeter分布式测试dubbo接口2
    Jmeter分布式测试dubbo接口1
  • 原文地址:https://www.cnblogs.com/jack-zh/p/10841693.html
Copyright © 2011-2022 走看看