Python 的一个内建值 int,我们首先将其赋值为 0,然后定义一个函数 fun1()。
int=0
def fun1():
int=1
def fun2():
int=2
print(int)
fun2()
fun1() # 输出 2
函数 fun1() 的作用就是调用函数 fun2() 来打印 int 的值。
输出结果为:2
因为 local 中的 int = 2,函数将其打印出来。
将函数 fun2() 中的 int = 2 删除:
int=0
def fun1():
int=1
def fun2():
print(int)
fun2()
fun1() # 输出 1
调用函数 fun1() 输出结果为:1
因为 local 找不到 int 的值,就去上一层 non-local 寻找,发现 int = 1 并打印。
而进一步删除函数 fun1() 中的 int = 1:
int=0
def fun1():
def fun2():
print(int)
fun2()
fun1()# 输出 0
调用函数 fun1() 输出结果为:0
因为 local 和 non-local 都找不到 int 的值,便去 global 中寻找,发现 int = 0 并打印。
若删除 int = 0这一条件:
def fun1():
def fun2():
print(int)
fun2()
fun1()
调用函数 fun1() 输出结果如下:
'int'>
因为 local、non-local、global 中都没有 int 的值,便去 built-in 中寻找 int 的值,即:
>>>int
<class'int'>