闭包:
内外函数嵌套,内部函数引用外部函数作用域下的非全局变量,外函数返回内函数对象
优点是: 为变量续命
缺点是: 浪费内
闭包案例
# 内外函数嵌套
def outer(n):
def inner():
# 内部函数引用外部函数作用域下的非全局变量
list1 = []
for i in range(1,n+1):
list1.append(i)
print(list1)
# 外函数返回内函数对象
return inner
outer(100)()
装饰器
作用:在不改变原函数的基础上增加新的功能
装饰器案例
import time
# 装饰器满足闭包的思路
# 内外函数嵌套
def outer(f):
def inner():
# 内部函数引用外部函数作用域下的非全局变量
# 记录程序运行时间
start_time = time.time()
f()
end_time = time.time()
print("一共用时", end_time - start_time)
# 外函数返回内函数对象
return inner
@outer
def func():
print("今天天气好晴朗")
time.sleep(1)
func() # 等同于 func == outer(func) == inner