代码如下(示例):
import time
# 例1 无返回值
def display_time(func):
def wrapper():
t1 = time.time()
func()
t2 = time.time()
print(f'运行时间:{t2-t1:.4}s')
return wrapper
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()
# 例2 有返回值,需要在装饰器返回出来
def display_time(func):
def wrapper():
t1 = time.time()
ret = func()
t2 = time.time()
print(ret)
print(f'运行时间:{t2-t1:.4}s')
return wrapper
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 count_prime_nums():
count = 0
for i in range(2, 10000):
if is_prime(i):
count += 1
return count
count_prime_nums()
# 例3 被装饰函数需传参
def display_time(func):
def wrapper(*args):
t1 = time.time()
ret = func(*args)
t2 = time.time()
print(ret)
print(f'运行时间:{t2-t1:.4}s')
return wrapper
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 count_prime_nums(maxnum):
count = 0
for i in range(2, maxnum):
if is_prime(i):
count += 1
return count
count_prime_nums(5000)