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

wordpress主题的网站模板上海网站建设设计公司排名

wordpress主题的网站模板,上海网站建设设计公司排名,怎么做单页网站导航,闵行区怎么读装饰器介绍与简单实现 1. 什么是装饰器 器:指的是具备某一功能的工具 装饰:指的是为被装饰器对象添加新功能 装饰器就是用来为被装饰器对象添加新功能的工具 注意:装饰器本身可以是任意可调用对象,被装饰器的对象也可以是任意可调用对象2. 为何要用装饰器 开放封… 装饰器介绍与简单实现 1. 什么是装饰器 器:指的是具备某一功能的工具 装饰:指的是为被装饰器对象添加新功能 装饰器就是用来为被装饰器对象添加新功能的工具 注意:装饰器本身可以是任意可调用对象,被装饰器的对象也可以是任意可调用对象2. 为何要用装饰器 开放封闭原则:封闭指的是对修改封闭,对扩展开放 装饰器的实现必须遵循两大原则: 1. 不修改被装饰对象的源代码 2. 不修改被装饰器对象的调用方式 装饰器的目标:就是在遵循1和2原则的前提下为被装饰对象添加上新功能3. 怎么用装饰器import timedef index(): print(welcome to index page) time.sleep(3)def outter(func): # func最原始那个index的内存地址 def wrapper(): starttime.time() func() #最原始的那个index的内存地址() stoptime.time() print(run time is %s %(stop - start)) return wrapperindexoutter(index) #indexoutter(最原始那个index的内存地址) #indexwrapper的内存地址index() #wrapper的内存地址()深入学习 import timedef index(): print(welcome to index page) time.sleep(3)def home(name): print(welcome %s to home page %name) time.sleep(2) return 123def timmer(func): #func最原始那个home函数的内地址 def wrapper(*args,**kwargs): #args(egon,) kwargs{} starttime.time() resfunc(*args,**kwargs) #最原始那个home函数的内地址(egon) stoptime.time() print(run time is %s %(stop - start)) return res return wrapper# indextimmer(index)index()hometimmer(home) #homeoutter(最原始那个home函数的内地址) #homewrapper函数的内地址reshome(egon) # reswrapper函数的内地址(egon)print(res) 装饰器的语法糖 # 装饰器的语法糖:在被装饰对象正上方单独一行写装饰器的名字# 运行原理:# python解释器一旦运行到装饰器的名字,就会调用装饰器,然后将被装饰函数的内存地址当作参数#传给装饰器,最后将装饰器调用的结果赋值给原函数名# import time## def timmer(func): #func最原始那个home函数的内地址# def wrapper(*args,**kwargs): #args(egon,) kwargs{}# starttime.time()# resfunc(*args,**kwargs) #最原始那个home函数的内地址(egon)# stoptime.time()# print(run time is %s %(stop - start))# return res# return wrapper## timmer #indextimmer(index)# def index():# print(welcome to index page)# time.sleep(3)## timmer #hometimmer(home)# def home(name):# print(welcome %s to home page %name)# time.sleep(2)# return 123## index()# reshome(egon) # reswrapper函数的内地址(egon)# print(res)##import time# 装饰器模板def outter(func): def wrapper(*args,**kwargs): #在调用函数前加功能 resfunc(*args,**kwargs) #调用被装饰的\也就是最原始的那个函数 #在调用函数后加功能 return res return wrapperoutter #indexoutter(index) #indexwrapperdef index(): print(welcome to index page) time.sleep(3)index()叠加多个装饰器 import timedef timmer(func): #funcwrapper2 def wrapper1(*args,**kwargs): starttime.time() resfunc(*args,**kwargs) #reswrapper2(*args,**kwargs) stoptime.time() print(run time is %s %(stop - start)) return res return wrapper1def auth(func): #func最原始的那个index的内存地址 def wrapper2(*args,**kwargs): inp_user input(please input your username: ).strip() inp_pwd input(please input your password: ).strip() if inp_user egon and inp_pwd 123: print(login successfull) resfunc(*args,**kwargs) # 调用最原始的那个/也就是被装饰的那个函数 return res else: print(username or password error) return wrapper2# 解释语法的时候是自下而上运行# 而执行装饰器内的那个wrapper函数时的是自上而下timmer # indextimmer(wrapper2) #indexwrapper1auth # indexauth(最原始的那个index的内存地址) #indexwrapper2def index(): print(welcome to index page) time.sleep(3)index() #wrapper1()# import time## def timmer(func):# print(timmer)# def wrapper1(*args,**kwargs):# starttime.time()# resfunc(*args,**kwargs) #reswrapper2(*args,**kwargs)# stoptime.time()# print(run time is %s %(stop - start))# return res# return wrapper1## def auth(func):# print(auth)# def wrapper2(*args,**kwargs):# inp_user input(please input your username: ).strip()# inp_pwd input(please input your password: ).strip()# if inp_user egon and inp_pwd 123:# print(login successfull)# resfunc(*args,**kwargs) # 调用最原始的那个/也就是被装饰的那个函数# return res# else:# print(username or password error)# return wrapper2### auth # indexauth(wrapper1) #indexwrapper2# timmer #timmer(最原始的index)返回wrapper1# def index():# print(welcome to index page)# time.sleep(3)## index() #wrapper2()#import timedef outter1(func1): #func1wrapper2 print(outter1) def wrapper1(*args,**kwargs): print(wrapper1) res1func1(*args,**kwargs) #res1wrapper2(*args,**kwargs) return res1 return wrapper1def outter2(func2): #func2最原始的那个index的内存地址 print(outter2) def wrapper2(*args,**kwargs): print(wrapper2) res2func2(*args,**kwargs) return res2 return wrapper2outter1 # indexoutter1(wrapper2) #indexwrapper1outter2 #outter2(最原始的那个index的内存地址) wrapper2def index(): print(welcome to index page) time.sleep(3)index() #wrapper1()outter2outter1wrapper1wrapper2 有参装饰器 import timecurrent_user{username:None}# 补充:所有的数据类型的值自带布尔值,可以直接当作条件去用,只需要记住布尔值为假的那一些值即可(0,空,None)def login(enginefile): #enginemysql def auth(func): #func最原始那个index的内存地址 def wrapper(*args,**kwargs): if current_user[username]: print(已经登录过了,无需再次登陆) resfunc(*args,**kwargs) return res if engine file: inp_user input(please input your username: ).strip() inp_pwd input(please input your password: ).strip() if inp_user egon and inp_pwd 123: print(login successfull) current_user[username]inp_user # 在登陆成功之后立刻记录登录状态 resfunc(*args,**kwargs) # res最原始那个index的内存地址(*args,**kwargs) return res else: print(username or password error) elif engine mysql: print(基于mysql的认证机制) elif engine ldap: print(基于ldap的认证机制) else: print(无法识别的认证源) return wrapper return authlogin(file) #auth # indexauth(最原始那个index的内存地址) #indexwrapperdef index(): print(welcome to index page) time.sleep(3)login(file)def home(name): print(welcome %s to home page %name) time.sleep(2) return 123index() #wrapper()reshome(egon)print(res)# 有参装饰器的模板def outter1(x,y,z): def outter2(func): def wrapper(*args,**kwargs): resfunc(*args,**kwargs) return res return wrapper return outter2# 无参装饰器的模板def outter(func): def wrapper(*args,**kwargs): resfunc(*args,**kwargs) return res return wrapper 转载于:https://www.cnblogs.com/ouyang99-/p/10414876.html
http://wiki.neutronadmin.com/news/418302/

相关文章:

  • 郑州网站建设 app开发为什么收不到自己网站
  • 怎么给网站做推广域名一定要备案才能用吗
  • 中山 灯饰 骏域网站建设专家企业咨询服务合同
  • 昆明网络公司网站wordpress增加边栏
  • 怎么查找网站建设在网站上部署淘宝联盟推广代码的推广模式.
  • 山东企业站点seosem优化服务公司
  • ASP动态商业网站建设案例镇江核酸检测通知
  • 荆门做网站滕州做网站哪家好
  • 临沂住房和城乡建设局网站打不开重庆乐尚装饰工程有限公司
  • 网站建设属于什么服务我想建个网站
  • 网站如何做3d产品成都网站建设公司湖南岚鸿
  • wordpress 商品站台州wordpress
  • 网站首页怎么用dw做外贸网站推广收费
  • 云南网站建设优化企业青岛代理记账
  • 域名哪个网站买最好python 有wordpress
  • 制作企业网站的流程北京海淀国税局网站
  • 网站建设基本流程教学视频凡客网站登陆
  • wordpress免费建站教程网站建设理由和目的
  • 做爰全的网站建设文明网站包括哪些内容
  • aliyun怎么建网站谷歌浏览器下载手机版官网中文
  • 青岛做网站哪家强企业网站模板php
  • 温州seo建站一个空间可以绑定几个网站
  • 没备案的网站磁力链最佳的搜索引擎
  • 九江建设监督网站学校网络推广方案
  • 网站优化知识资讯网上竞价投标流程
  • 婚纱摄影行业网站建设wordpress 消息通知
  • 网站建设方案报价网站行业
  • 行业网站的优势十年专业网站建设
  • 做西班牙语网站如何常看wordpress默认编辑器
  • 中国行业网站联盟360 网站优化