PYTHON NOTES · 08
理解闭包的状态保存方式,并使用装饰器扩展函数能力。
- 闭包
- 装饰器
Python 闭包与装饰器
理解闭包的状态保存方式,并使用装饰器扩展函数能力。
1.垃圾回收机制
#1.什么是垃圾 # garbage collection -> gc #没有用的内存 #2.回收条件是什么 #如果一个变量不可访达,就会被回收(标记清除法)
2.闭包三要素
闭包的核心思想:绕过垃圾回收机制的一种高级编程思想
闭包的作用:延伸变量作用域的范围
有嵌套 -> 外函数嵌套内函数
有引用 -> 内函数要引用外函数的变量
有返回值 -> 返回值为内函数的名字
#global 在函数内部访问全局变量
#nonlocal 在函数内部修改外部函数的变量
def count():
count = 0
def add():
nonlocal count
count += 1
print(f"当前count值为{count}")
return add
1.内置装饰器
python中自带的装饰器,直接调用就可以
@classmethod 类装饰器
@staticmethod 静态装饰器
2.自定义装饰器
2.1 通用装饰器
def out(fn):
def inner(*args,**kwargs)
print("开始执行")
res=fn
return res
return inner
2.2 无参数无返回值
def out(fn):
def inner()
print("开始执行")
fn
return inner
2.3有参数无返回值
def out(fn):
def inner(a,b)
print("开始执行")
fn(a,b)
return inner
2.4 无参数有返回值
def out(fn):
def inner()
print("开始执行")
res=fn()
return res
return inner
2.5 有参数有返回值
def out(fn):
def inner(a,b)
print("开始执行")
res=fn(a,b)
return res
return inner