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

网页版视频网站建设需要多少钱/seo推广有哪些公司

网页版视频网站建设需要多少钱,seo推广有哪些公司,昆明做小程序的公司,文库网站开发建设装饰器是在不修改源代码的情况下,使用装饰器增加原函数的功能。 在软件开发中有一个原则——"开放-封闭",简单地说就是已经实现的功能不允许被修改,但可以被扩展。 封闭:已经实现的功能不可以被修改开放:对…

装饰器是在不修改源代码的情况下,使用装饰器增加原函数的功能。

在软件开发中有一个原则——"开放-封闭",简单地说就是已经实现的功能不允许被修改,但可以被扩展。

  • 封闭:已经实现的功能不可以被修改
  • 开放:对现有的功能可以扩展

这个小实验写了三个装饰器和两个普通函数,对比可以得出装饰器运行的过程

import time
def dec1(func):#装饰器1  参数为被装饰的函数funcprint('dec1', func.__name__)#打印装饰器的名字及被装饰的函数名def wrapper1(*args, **kwargs):start_time = time.time()func(*args, **kwargs)#可同时传入多个参数,是具体函数而定end_time = time.time()print('dec1', end_time - start_time)return wrapper1
#可以根据参数func的参数,定制、添加原函数的功能。
def dec2(func):#装饰器2print('dec2', func.__name__)def wrapper2(*args, **kwargs):start_time = time.time()func(*args, **kwargs)#可同时传入多个参数,是具体函数而定end_time = time.time()print('dec2', end_time - start_time)return wrapper2def dec3(func):#装饰器3print('dec3', func.__name__)def wrapper3(*args, **kwargs):start_time = time.time()func(*args, **kwargs)#可同时传入多个参数,是具体函数而定end_time = time.time()print('dec3', end_time - start_time)return wrapper3
'''
当多个装饰器装饰同一个函数时,装饰器的运行顺序是从下到上的,比如下面这个func函数,装饰器运行的顺序应当是dec3->dec2->dec1
'''
@dec1
@dec2
@dec3
def func(a, b):#函数func,同时被3个装饰器装饰print(a, b)@dec2
def func1(a, b, c):#函数func1   与函数func 对比 二者参数的个数不同print(a, b, c)if __name__ == '__main__':func('1', '2')func1(1, 2, 3)

运行的结果

dec3 func
dec2 wrapper3
dec1 wrapper2
dec2 func1
1 2
dec3 0.0
dec2 0.0
dec1 0.0
1 2 3
dec2 0.0Process finished with exit code 0

 


分析函数func的运行过程

  1. 传入dec3的方法是func
  2. 传入dec2的方法是运行dec3返回的wrapper3
  3. 传入dec1的方法是运行dec2返回的wrapper2
  4. 执行函数func
  5. 执行dec3后续代码
  6. 执行dec2后续代码
  7. 执行dec1后续代码

 


对于带返回值的函数,在写装饰器时要返回函数的返回值。如下面这段代码

def dec1(func):#装饰器1  参数为被装饰的函数funcprint('dec1', func.__name__)#打印装饰器的名字及被装饰的函数名def wrapper1(*args, **kwargs):start_time = time.time()res = func(*args, **kwargs)#可同时传入多个参数,是具体函数而定end_time = time.time()print('dec1', end_time - start_time)return res#对于有返回值的函数要加返回值return wrapper1

 有参装饰器模板:

def decorator(parameter):# 有参装饰器def dec1(func):# 装饰器1  参数为被装饰的函数funcprint('dec1', func.__name__)# 打印装饰器的名字及被装饰的函数名def wrapper1(*args, **kwargs):  # 可以调用decorator传入的参数parameterstart_time = time.time()res = func(*args, **kwargs)# 可同时传入多个参数,是具体函数而定end_time = time.time()print('dec1', end_time - start_time)return res # 对于有返回值的函数要加返回值return wrapper1return dec1

 

http://www.jmfq.cn/news/5200525.html

相关文章:

  • 相册网站开发/新网站seo外包
  • 百度商桥怎么接网站/推广普通话主题手抄报
  • 网站建设的流程是什么意思/商品标题优化
  • 搜索引擎是指什么/泸州网站优化推广
  • 合肥做网站web0551/佛山网站建设制作
  • 网站的哪些标签需要优化/抖音推广合作方式
  • 网页美工设计说明书/网站关键词推广优化
  • 什么是wordpress网站/百度sem运营
  • 一起做网站吧/nba最新比赛直播
  • 营销型网站怎么做/免费网络推广公司
  • 推广小程序拿佣金/seo优化软件购买
  • 自己如何建设网站/企业网
  • 天津艺匠做网站怎么样/杭州seo排名收费
  • 做的好的学校网站/win优化大师官网
  • 什么是网站主办者/谷歌seo实战教程
  • php jsp动态网站开发/百度官方入口
  • 潍坊建设网站公司电话/营销方案设计思路
  • 做自己的网站要多少钱/搜狗网址
  • 论文中网站数据如何做脚注/seo具体是什么
  • 延安网站建设/开发一个app需要多少钱
  • 网站怎么做移动图片大全/qq群引流推广平台
  • 哪里能给人做网站/爱站seo工具
  • 电商网站如何做多语言架构/网站优化靠谱seo
  • 石龙镇网站仿做/互联网项目推广是什么
  • wordpress防攻击/广东网站seo
  • 如何找回网站备案密码/宝安网站建设
  • wordpress评论表单获取qq/北京百度推广优化
  • wordpress新用户注册邮件/十大seo免费软件
  • 高中学校网站模板/seo精灵
  • 企业宣传片汇报片拍摄/徐州seo推广