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

成都市城乡建设局网站中国新闻发布

成都市城乡建设局网站,中国新闻发布,网站备案报道,如何在电脑登录wordpress为什么用装饰器? 第一个原因是,使用装饰器可以提升代码复用,避免重复冗余代码。如果我有多个函数需要测量执行时间,我可以直接将装饰器应用在这些函数上,而不是给多个函数加上一样的代码。这样的代码既元余也不方便后…

为什么用装饰器?

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

相关文章:

  • 建设一个网站需要用到几个语言seo搜索引擎优化试题
  • 云南省住房与城乡建设厅网站关键词排名零芯互联排名
  • 山东坤泰建设集团网站手机百度搜索app
  • wordpress php推送示例seozou是什么意思
  • 做网站多久天津seo网站管理
  • 建设局查询网站网络上市场推广
  • 怎么做装修网站b2b多平台一键发布
  • ASP做网站源代码大专网络营销专业好不好
  • 网络公司网站 优帮云做网站排名服务热线
  • 制作网页设计软件列表案例谷歌seo 优化
  • wordpress网站备案上海搜索推广
  • 网站建设套餐有哪些安卓在线视频嗅探app
  • 做电影网站要买什么重庆seo网站哪家好
  • 广州北京网站建设公司网站外部优化的4大重点
  • 网站建设书优化大师是干什么的
  • 优秀的网站建设公司百度指数人群画像
  • wordpress企业中文模板太原seo哪家好
  • 广东网广东网站建设网站推广方案模板
  • 网站运营知识快手seo
  • 咖啡公司网站建设策划书微信营销方式
  • 柳江区城乡住房建设局网站上海seo优化服务公司
  • 西城企业网站建设企业网站怎么优化
  • 初学者做动态网站项目例子游戏特效培训机构排名
  • 汽车类网站搭建直链平台
  • 做网站遇到的困难总结网络营销软件代理
  • 做网站登录论坛外链代发
  • 东营专业网站建设公司排行青岛谷歌优化公司
  • 公众号和网站先做哪个口碑营销的形式
  • 长沙企业建网站费用关键词搜索推广排行榜
  • 怎么做网站端口代理沧州网络推广外包公司