- 定义一个函数,在不修改这个函数的代码的情况下,让函数执行前后会有新的内容加入
def func():
print("func")
return
def outer():
def inner():
print("new code before")
func()
print("new code after")
return
return inner
func = outer()
func()
- 上述的写法会变成死循环,在第11行相当于修改了
func
函数的指向,导致反复调用outer函数 - 上述写法要改写
def func():
print("func")
return [1, 2, 3]
def outer(arg):
def inner():
print("before")
res = arg()
print("after")
return res
return inner
func = outer(func)
func()
- 还是不能理解闭包的形式
- 上述写法的逻辑是之前定义了一个函数,将这个函数包装一下,从而在不改变其最一开始定义的内容的情况下,再次调用这个函数(函数名相同),会在前和后添加其它逻辑与代码