python装饰器
前言
此篇博文没有任何套路,就是简单记录一下自己学习装饰器的笔记。
装饰器
首先我们定义一个装饰器
import time
# 定义装饰器
def display_time(func):
def wrapper(): # wrapper表示的意思是,要运行func这个函数,要运行那些内容
t1 = time.time()
func() #运行一下我要走的那个函数
t2 = time.time()
print(t2-t1)
return wrapper #
以上就是一个写好的装饰器。现在我们就将这个装饰器用到一下的prime_nums
函数上面。
def is_prime(num):
if num<2:
return False
elif num ==2:
return True
else:
for i in range(2,num):
if num % i == 0:
return False
return True
@display_time
def prime_nums():
for i in range(2,10000):
if is_prime(i):
print(i)
然后我们运行我们的主函数prime_nums()
。
prime_nums()
重点来了:当我运行prime_nums()
函数的时候,它会先直接跳到装饰器display_time(func)
里面,然后运行wrapper()
里面的内容:先运行t1
,然后运行我要运行的函数(prime_nums)
:这个func
才是prime_nums()
函数;再运行t2
。
通俗点讲,装饰器也就是一个函数。如果我要运行的函数带参数,应该怎么办那?那就需要修改装饰器:
def wrapper(*args,**kwargs):
...
result = func(*args,**kwargs)
...