1.是访问变量时查找变量名的范围
* 变量名查找规则:
在访问变量时,先查找本地变量,然后是包裹此函数外部的函数内的变量,之后是全局变量
最后是內建作用域内的变量
即: L –> E —> G —> B
** 在默认情况下,变量名赋值会在当前作用域内创建变量和修改变量
v = 100 # 全局作用域 def fun1(): v = 200 # 外部嵌套函数作用域 print('fun1.v=', v) def fun2(): v = 300 # 局部作用域 print('fun2.v=', v) print(max) # max函数都没有创建,在内建函数作用域中,只读,不能改变 # 可以在其余三个作用域重新创建。 fun2() fun1() print("全局变量.v=", v) print(max)
2.示例2
name = 'alex' def foo(): name = 'lhf' def bar(): name = 'wupeiqi' def tt(): print(name) return tt return bar func = foo()#逐步调用函数,这里调用后的结果是bar() tt = func()#这个步骤是调用bar() 返回tt print(tt) tt()#调用tt()函数 #foo()()()#合并上面几个步骤
3.示例3
name = 'alex' def foo(): name = 'linhaifeng' def bar(): name = 'wupeiqi' print(name) return bar a = foo() print(a) a() #bar()