Python装饰器原理
运行时发现,python的装饰器函数会在 import 的时候运行,甚是困惑。
分析下装饰器的实际实现方式,就能找到原因,如下:
# 一个简单的例子
def decro(f):
print("Top code is exec!")
def wrapper():
f()
return wrapper
@decro
def simple_function():
print("in simple_function")
python 的 @xxx 是一个语法糖,在这里等价于:
def simple_function():
print("in simple_function")
simple_function = decro(simple_function)
因此,import 的时候会执行 decro
这个函数