为什么这个myfunc不会调用call func 这里的call func是扫码意思呢
import timedef time_master(func):
def call_func():
print("开始运行程序。。")
start=time.time()
func()
stop=time.time()
print("结束程序运行。。。")
print(f"一共耗费了{(stop-start):.2f}")
return call_func
def myfunc():
time.sleep(2)
print("我循环鱼c")
myfunc=time_master(myfunc) 首先,从代码中可以看出,你定义了一个装饰器 time_master,这个装饰器接收一个函数 func 作为参数,
然后在其内部定义了一个新的函数 call_func。这个 call_func 函数会在调用 func 前后分别输出一些信息,并计算 func 的运行时间。
接着,你定义了一个名为 myfunc 的函数,其功能是让程序暂停两秒钟,然后输出一个字符串。
然后,你通过下面这行代码将 myfunc 函数传递给 time_master 装饰器:
myfunc = time_master(myfunc)
这一行代码实际上会将 time_master 装饰器应用于 myfunc 函数,
然后将返回的 call_func 函数赋值给 myfunc。至此,你已经将原始的 myfunc 函数用 call_func 函数进行了包装。
但是,你在代码中没有实际调用 myfunc 函数。因此,你看不到 call_func 函数的输出。
你需要在代码的最后加上一行 myfunc(),以便实际调用经过装饰的 myfunc 函数。
这是修改后的代码:
import time
def time_master(func):
def call_func():
print("开始运行程序。。")
start = time.time()
func()
stop = time.time()
print("结束程序运行。。。")
print(f"一共耗费了{(stop-start):.2f}")
return call_func
def myfunc():
time.sleep(2)
print("我循环鱼c")
myfunc = time_master(myfunc)
# 调用经过装饰的 myfunc 函数
myfunc()
在这个例子中,调用 call_func 是通过调用经过装饰的 myfunc 函数实现的。 小甲鱼教过的,用@语法糖就可以解决了
页:
[1]