zoukankan      html  css  js  c++  java
  • 函数作用域

      python中的作用域分4种情况

    L:local,局部作用域,即函数中定义的变量;

    E:enclosing, 嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;

    G:global,全局变量,就是模块级别定义的变量;

    B:built-in, 系统固定模块里面的变量,比如int,bytearray等。搜索变量的优先级顺序是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。例如

     1 x = int(2.9)  # int  built-in
     2 g_count = 0   # global
     3 o_count = 4
     4 def outer():
     5     o_count = 1  # enclosing   父子局部作用
     6     def inner():
     7         i_count = 2    #  local 本地作用
     8         print(o_count)  # 从里到外找
     9         print(i_count)
    10     inner()
    11 outer()
    12 输出:
    13 1
    14 2

    #####在局部作用域里面不能修改全局变量

    在函数中引入全局变量就不能对全局变量进行修改    错误实例

    1 count = 10
    2 def test():
    3     print(count)  # 报错
    4     count = 2   # print已经引入count变量,就不能重新进行赋值
    5 def test1():
    6     count = 3    # 表示在局部变量中进行重新定义。所以不报错
    7 输出:
    8 1
    9 2

    想修改全局变量,只需加上global

    修改上一级的变量使用nonlocal

  • 相关阅读:
    redis哨兵模式
    zookeeper 日志输出到指定文件夹
    Zookeeper运维问题集锦
    应用层、传输层、网络层常用协议
    链表排序
    集线器、交换机、路由器的区别
    C链表
    virtio/pass-through
    shell脚本实例
    KVM虚拟化相关-进阶
  • 原文地址:https://www.cnblogs.com/ch2020/p/12372338.html
Copyright © 2011-2022 走看看