美文网首页
Python基础13-作用域

Python基础13-作用域

作者: Jacob_LJ | 来源:发表于2018-05-12 22:37 被阅读13次
    Python基础-作用域

    作用域

    1 概念

    • python 是静态作用域,即变量的作用域源于它在代码中的位置,在不同的位置,可能有不同的命名空间

    2 python-LEGB

    • L - Local:函数内的命名空间。
      作用范围:当前整个函数体范围
    • E - Enclosing function locals:外部嵌套函数的命名空间
      作用范围:闭包函数
    • G - Global:全局命名空间
      作用范围:当前模块(文件)
    • B - Builtin:内建模块命名空间。
      作用范围:所有模块(文件)
      LEGB 规则:L > E > G > B 顺序进行查找

    3 注意

    • python 中没有块级作用域
    • 块级作用域,即在代码块中,比如 if while for 后的代码块
    if True:
        a = 10
    
    print(a) # 外面可以访问 a 变量
    

    4 基于命名空间的常见变量类型

    • 局部变量
    * 在一个函数内部定义的变量
    * 作用域为函数内部
    * 查看局部变量,locals()
    
    • 全局变量
    * 在函数外部,文件最外层定义的变量
    * 作用域为整个文件内部
    * 查看全局变量,globals()
    
    • 注意
    nonlocal a :只能用于闭包函数内修改外层函数变量a
    global a :只用于修改全局变量 a,即函数内修改函数外变量 a
    
    1. 访问原则
    * 从内到外
    
    2. 结构规范
    * 将全局变量统一放在文件头部
    * 然后是函数定义
    * 最后是逻辑代码
    
    3. 全局变量和局部变量重名
    * 获取:就近原则
    * 修改:global 全局变量,进行声明
    
    4. 命名
    * 全局变量一般是 g_a 等
    

    相关文章

      网友评论

          本文标题:Python基础13-作用域

          本文链接:https://www.haomeiwen.com/subject/mhzhdftx.html