本篇文章给大家带来了关于python的相关知识,其中主要整理了装饰器函数的相关问题,包括了装饰器的形成过程、本质与功能、进阶与优化等等内容,下面一起来看一下,希望对大家有帮助。
- 推荐学习:python
假如我写了一个函数 f
def f():
print('hello')
之后我想知道这段函数执行所要的时间,这好办,我只要将代码改为如下就行
import time
def f():
start = time.time() #获取程序执行开始的时间
print('hello')
end = time.time() #获取程序执行结束的时间
print(end - start) #得出函数f执行所要时间
f()
但之后我有写了无数个函数f2,f3……fn,我想知道每个函数执行所需要的时间,那么如果都像上面一样改,岂不是很闹心?还是不行,因为这样实在是太麻烦了。那怎么办呢?于是灵机一动,写了一个timer函数。。。
import time
def timer(func):
start = time.time()
func()
print(time.time() - start)
def f():
print('hello')
def f2():
print('xorld')
timer(f)
timer(f2)
这样看起来是不是简单多啦?不管我们写了多少个函数都可以调用这个计时函数来计算函数的执行时间
但是如果我只想用原来的方式f1(),f2(),fn()调用了这个函数,函数在原本执行输出的结果不变的前提下还可以增加计算时间的功能,而不是调用timer(f),timer(f2)才能计算时间,这该怎么办呢?
看了下面的装饰器函数你就会知道如何解决这个问题
一、装饰器 —— 形成过程
以下就是解决上面问题的代码的简单版:
import time
def f():
print('hello')
def timer(func):
def inner():