• 函数作用域


      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

  • 相关阅读:
    centos 7 服务器网卡做bond
    python 函数参数
    python 文件操作
    Linux 150命令之 文件和目录操作命令 cd pwd cp mv touch
    创建https证书
    Linux 150命令之 文件和目录操作命令 ls
    zabbix 2.2.2 安装部署
    NTP错误总结
    NTP时间服务器
    150命令之线上查询及帮助命令 man hellp
  • 原文地址:https://www.cnblogs.com/ch2020/p/12372338.html
Copyright © 2020-2023  润新知