标签:全局变量 div 嵌套 def global 顺序 调用 bsp int
作用域
作用范围:
全局范围(内置名称空间与全局名称空间属于该范围):全局有效
局部范围(局部名称空间属于该范围):局部有效
注:作用域关系是在函数定义阶段就已经固定的,与函数的调用位置无关
查看作用域
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关键字用于修改上一层的变量,但是不会修改全局的,如果局部没有找到就会报错
标签:全局变量 div 嵌套 def global 顺序 调用 bsp int
原文地址:https://www.cnblogs.com/Mr-chenshuai/p/9954081.html