1.嵌套函数
嵌套函数就是在函数内部定义的函数
def f1():
print('abcd')
def f2():
print('fguyrwe')
f2()
f1()
嵌套函数的作用:
- 封装------隐藏数据(外部无法访问嵌套函数)
- 贯彻DRY(don’t repeat yourself)原则
- 闭包
2. nonlocal关键字
nonlocal 用来声明外层的局部变量
global 用来声明全局变量
def outer():
b = 10
def inner():
nonlocal b #声明外部函数的局部变量
print('inner b:',b)
b = 20 #如果不使用nonlocal会报错
inner()
print('oiter b:',b)
outer()
#result
inner b:10
outer b:20
3. LEGB规则
python在查找‘名称时’,是按照LEGB规则查找的:local—enclosed----global—build in(即一个从里到外的顺序查找)
-
local 函数或者类的方法内部
-
enclosed 嵌套函数(一个函数包裹另一个函数,闭包)
-
global 模块的全局变量
-
build in python为自己保留的特殊名称
-
global 模块的全局变量
-
build in python为自己保留的特殊名称