装饰器
【摘要】
一、装饰器
在不改变函数逻辑的情况下,为函数添加额外功能
二、装饰器实现代码
先实现质数查询的函数
test_prime.py
# coding=utf-8""" @Project :pachong-master @File :test_decorator.py @Aut...
一、装饰器
在不改变函数逻辑的情况下,为函数添加额外功能
二、装饰器实现代码
先实现质数查询的函数
test_prime.py
-
# coding=utf-8
-
"""
-
@Project :pachong-master
-
@File :test_decorator.py
-
@Author :gaojs
-
@Date :2022/7/16 21:12
-
@Blogs : https://www.gaojs.com.cn
-
"""
-
import time
-
-
-
def prime_number(num):
-
"""
-
计算是否是质数
-
:return:
-
"""
-
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
-
-
-
def count_prime_number(maxnumber):
-
"""
-
统计质数个数
-
:return:
-
"""
-
count = 0
-
t1 = time.time()
-
for i in range(2, maxnumber):
-
if prime_number(i):
-
count += 1
-
print(count)
-
t2 = time.time()
-
print(f'***********************总共耗时 {t2 - t1} **************************')
-
return count
未带装饰器执行结果
统计函数执行时长的装饰器
-
def display_time(func):
-
"""
-
执行此函数耗时计算
-
:param func:
-
:return:
-
"""
-
def wrapper(*args, **kwargs):
-
t1 = time.time()
-
result = func(*args, **kwargs)
-
t2 = time.time()
-
print('***********************总共耗时: {:.4} s **************************'.format(t2 - t1))
-
return result
-
return wrapper
-
-
-
def prime_number(num):
-
"""
-
计算是否是质数
-
:return:
-
"""
-
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_number(maxnumber):
-
"""
-
统计质数个数
-
:return:
-
"""
-
count = 0
-
for i in range(2, maxnumber):
-
if prime_number(i):
-
count += 1
-
print(count)
-
return count
-
-
-
count = count_prime_number(9999)
-
print(count)
带上装饰器的执行结果
三、装饰器总结
这里会用到args和kwargs, 如果函数有传参和返回值,则装饰器也要有参数和返回值
-
def xx1(被装饰函数):
-
def xx2(如果被装饰函数有参数那么输入):
-
xxxxxxxxxxxxxxx
-
被装饰函数(如果被装饰函数有参数那么输入)
-
xxxxxxxxxxxxxxx
-
# 如果被装饰函数中含有reture则需要返回被装饰函数
-
# 没有则不需要
-
reture xx2
-
def xx1(func):
-
"""
-
执行此函数耗时计算
-
:param func:
-
:return:
-
"""
-
def xx2(*args, **kwargs):
-
xxxxxxxxx
-
# 如果函数fanc()有返回值,则需要接受返回值
-
result = func(*args, **kwargs)
-
xxxxxxxxx
-
return result
-
return wrapper
文章来源: blog.csdn.net,作者:懿曲折扇情,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_41332844/article/details/126837303
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)