Python--作用域

Posted mr-chenshuai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python--作用域相关的知识,希望对你有一定的参考价值。

作用域

作用范围:
    全局范围(内置名称空间与全局名称空间属于该范围):全局有效
    局部范围(局部名称空间属于该范围):局部有效

  注:作用域关系是在函数定义阶段就已经固定的,与函数的调用位置无关

 


 

查看作用域

LEGB 代表名字查找顺序: locals -> enclosing function -> globals -> __builtins__
locals 是函数内的名字空间,包括局部变量和形参
enclosing 外部嵌套函数的名字空间(闭包中常见)
globals 全局变量,函数定义所在模块的名字空间
builtins 内置模块的名字空间

  


 

global & nonlocal

x = 1
def foo():
    global x
    x = 3
    print(x)
foo()
print(x)
 
#  global关键字用于在局部修改全局的变量
 
 
x = 1
def f1():
    x =0
    print(x)        # 0
    def f2():
        x = 2
        print(x)        # 2
        def f3():
            nonlocal x
            x = 666
            print(x)        # 666
        f3()
        print(x)    # 666
    f2()
f1()
print(x)    # 1
 
#  nonlocal关键字用于修改上一层的变量,但是不会修改全局的,如果局部没有找到就会报错

  

 

以上是关于Python--作用域的主要内容,如果未能解决你的问题,请参考以下文章

JS 作用域及作用域链

JS 作用域及作用域链

作用域是什么?

JavaScript 作用域 与 作用域链

Python名称绑定和作用域的关系??

JS---闭包