|
发表于 2023-4-2 22:11:48
|
显示全部楼层
首先,从代码中可以看出,你定义了一个装饰器 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 函数实现的。 |
|