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--作用域的主要内容,如果未能解决你的问题,请参考以下文章