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

公司名字大全英文官方网站建设优化

公司名字大全英文,官方网站建设优化,北京网站建设搜q.479185700,东莞整站优化火速公司为什么用装饰器? 第一个原因是,使用装饰器可以提升代码复用,避免重复冗余代码。如果我有多个函数需要测量执行时间,我可以直接将装饰器应用在这些函数上,而不是给多个函数加上一样的代码。这样的代码既元余也不方便后…

为什么用装饰器?

  • 第一个原因是,使用装饰器可以提升代码复用,避免重复冗余代码。如果我有多个函数需要测量执行时间,我可以直接将装饰器应用在这些函数上,而不是给多个函数加上一样的代码。这样的代码既元余也不方便后面维护
  • 第二个原因是,使用装饰器可以保证函数的逻辑清晰。如果一个本身功能就很复杂的函数,我还要通过修改内部代码来测量运行时间,这样会模糊函数自身的主逻辑。同时,软件开发的一个原则就是单一职责,也就是说,一个函数只应该承担一项责任
  • 第三,通过装饰器,我们可以扩展别人的函数。想象我们正在使用一个第三方库的函数,但我要添加额外的行为,比如测量运行时间,那我就可以用装饰器去包装,而不是跑到库里面去修改。
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/607726/

相关文章:

  • 湖州网站建设服务明星个人网站建设需求分析
  • 分享代码的网站惠州网站建设乐云seo在线制作
  • 网站项目建设背景门户网站类型
  • 北京营销型网站建设培训风铃制作
  • 计算机网站建设和维护wordpress屏蔽登陆按钮
  • 网站开发常用小图片能做游戏的软件
  • 讨债公司 做网站wordpress会员到期
  • 网站模版下载怎样做科技小制作视频网站
  • 学做网站论坛vip账号破解网站建设招标评分标准
  • 什么网站可做浏览器首页用电脑做网站
  • 国内红酒网站建设保健品 网站模板
  • 深圳网站建设自己人深圳网站建设网站设计软文推广
  • 向公司申请请做网站新东方厨师学费价目表
  • 文学网站开发设计报告二手房网站制作教程
  • wordpress建网站视频怎样做公司官方网站
  • 途牛旅游网站建设背景网页设计与制作教程第4版
  • 计算机多媒体辅助教学网站开发宁波手工活外发加工网
  • 网站广告联盟平台做网站要求高吗
  • 做百度移动网站优做长页网站
  • 软件制作网站什么网站可以做任务挣钱的
  • 汕头快速建站模板视频分享网站建设
  • 建站空间怎么选宁波网站建设公司哪家口碑好
  • 响应式网站是什么.net 网站开发流程
  • 购物网站建设需要什么资质沈阳旅游团购网站建设
  • 企业网站的优缺点网站的在线支付模块怎么做
  • 广州网站建设培训手机端网站建设公司
  • cms网站是什么意思免费商品交易网站代码下载
  • 查询类网站怎么做网站做网页
  • 哈尔滨 网站建设公司wordpress无法显示图片
  • 快速的宝安网站建设php网站开发心得3500字