当前位置: 首页 > news >正文

网站导航网址大全个人网站案例

网站导航网址大全,个人网站案例,大兴安岭网站建设,我要自学网ps视频教程免费下载为什么用装饰器? 第一个原因是,使用装饰器可以提升代码复用,避免重复冗余代码。如果我有多个函数需要测量执行时间,我可以直接将装饰器应用在这些函数上,而不是给多个函数加上一样的代码。这样的代码既元余也不方便后…

为什么用装饰器?

  • 第一个原因是,使用装饰器可以提升代码复用,避免重复冗余代码。如果我有多个函数需要测量执行时间,我可以直接将装饰器应用在这些函数上,而不是给多个函数加上一样的代码。这样的代码既元余也不方便后面维护
  • 第二个原因是,使用装饰器可以保证函数的逻辑清晰。如果一个本身功能就很复杂的函数,我还要通过修改内部代码来测量运行时间,这样会模糊函数自身的主逻辑。同时,软件开发的一个原则就是单一职责,也就是说,一个函数只应该承担一项责任
  • 第三,通过装饰器,我们可以扩展别人的函数。想象我们正在使用一个第三方库的函数,但我要添加额外的行为,比如测量运行时间,那我就可以用装饰器去包装,而不是跑到库里面去修改。
import time
import math#函数接收的参数为函数
def mysqrt(x):return math.sqrt(x)def print_running(f,x):print(f'{f.__name__} is running')return f(x)result= print_running(mysqrt,9)
print(result)

mysqrt is running
3.0

#基本的装饰器例子import time
def myDecorator(func):def warpper(*args,**kwargs):start_time=time.time()result=func(*args,**kwargs)end_time=time.time()print(f'{func.__name__} running time :{end_time-start_time}')return resultreturn warpperdec_mysqrt=myDecorator(mysqrt)
result=dec_mysqrt(9)
print(result)#使用@语法完成函数名字上面代码段的dec_mysqrt=myDecorator(mysqrt)替换
@myDecorator#函数接收的参数为函数
def mysqrt(x):return math.sqrt(x)x=mysqrt(10)
print(x)

mysqrt running time :0.0
3.0

#装饰器生成器:比如要要测量某函数运行时间是否超过阈值,但不同函数的阈值是不一样的,所以需要定义多个装饰器应对不同阈值吗?不,只需要用装饰器生成器
def timer(threshold):def decorator(func):def warpper(*args,**kwargs):start_time=time.time()result=func(*args,**kwargs)end_time=time.time()if (end_time-start_time>threshold):print(f'{func.__name__} running time is over {threshold} seconds')return resultreturn warpperreturn decorator@timer(0.2)
def sleep_04():time.sleep(0.4)# #上述写法的等价写法
# def sleep_04():
#     time.sleep(0.4)
# sleep_04 =timer(0.2)(sleep_04)sleep_04()
print(sleep_04.__name__)

sleep_04 running time is over 0.2 seconds
warpper

#但是上面的代码的sleep_04.__name__是warpper,不是sleep_04。
#能继承函数名字等参数的装饰器生成器import functools
def timer(threshold):def decorator(func):@functools.wraps(func)def wrapper(*args,**kwargs):start_time=time.time()result=func(*args,**kwargs)end_time=time.time()if (end_time-start_time>threshold):print(f'{func.__name__} running time is over {threshold} seconds')return resultreturn wrapperreturn decorator@timer(0.2)
def sleep_04():time.sleep(0.4)
# #上述写法的等价写法
# def sleep_04():
#     time.sleep(0.4)
# sleep_04 =timer(0.2)(sleep_04)sleep_04()
print(sleep_04.__name__)

sleep_04 running time is over 0.2 seconds
sleep_04

http://www.yayakq.cn/news/666073/

相关文章:

  • 移动端网站如何优化南京疾控最新通告今天
  • 站长 网站对比老网站权重低的原因
  • 网站上线准备移动端关键词排名如何优化
  • 射阳县住房和城乡建设局网站坂田做网站多少钱
  • 网站数据网站内容不被收录
  • 做音乐创作的网站广州海珠区天气预报
  • 网站运行速度慢wordpress 留言板展示
  • 静态学校网站做毕业设计中油七建公司官网
  • 西宁企业网站建设公司阿里云网络服务器
  • 网站邮件设置图片网站 模板
  • 创建官方网站网址开发平台技术创新联盟
  • 网站怎么解析域名解析每平每屋设计家官网
  • 北京网站制作公司报价佛山行业网站设计
  • 网站外链多的危害网页制作论文3000字
  • 知名企业网站截图微信网页宣传网站怎么做
  • 响应网站 整屏建设工程标准在线网站
  • 网页游戏网站hpjy苏州网站建设比较好的公司
  • 泉州网站建设服务阿里云域名注册好后怎么建设网站
  • 把网站内容全删掉 在重新建立会不会被k网站首页栏目怎么做
  • 苏州网站设计公司有哪些军事新闻最新消息视频
  • 天津网站搜索引擎优化wordpress主题开发 书
  • 万网网站建设方案书新开传奇网站999新服网
  • wordpress企业站模板网站备案管理
  • 携程旅游网官方网站 做攻略wordpress 访问
  • 广东做网站找谁工业产品设计图
  • 建设网站书籍手机电脑网站设计
  • 做汽车行业必须注册际零件网站wordpress 评论提醒
  • 贵阳网站建设哪家便宜国外购物网站有哪些
  • 做网站开发的笔记本配置网站建设公司客户开发手册
  • 初学者自己做网站北京小程序开发电话