1.原理:
(其实质就是用到闭包)
def setfunc(func):
def callfunc():
print("-------")
print("*******")
func()
return callfunc
def test():
print("test")
test = setfunc(test)
test()
解释:
- test = setfunc(test)这个句子创建了一个空间,空间里有一个形参func=test,同时还有一个函数,之后能就返回这个函数指向给左边的test。
- 左边的test(),其实质就是函数指向的函数执行。
等价代码:
def setfunc(func):
def callfunc():
print("-------")
print("*******")
func()
return callfunc
@setfunc
def test():
print("test")
# test = setfunc(test)
test()
(说白了,创建一个空间,返回一个调用函数的口,然后函数执行。就像装饰器这个名字一样,只是给你的函数加了点装饰。)
原理图: