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

顺德建设网站团购网站模板 免费

顺德建设网站,团购网站模板 免费,一个电商网站开发要多久,wordpress 文章打不开一、什么是装饰器 装饰#xff1a;装饰既修饰#xff0c;意指为其他函数添加新功能 器#xff1a;器既函数 装饰器定义#xff1a;本质就是函数#xff0c;功能是为其他函数添加新功能 二、装饰器需要遵循的原则 1、不能修改装饰器的源代码#xff08;开放封闭原则#… 一、什么是装饰器 装饰装饰既修饰意指为其他函数添加新功能 器器既函数 装饰器定义本质就是函数功能是为其他函数添加新功能 二、装饰器需要遵循的原则 1、不能修改装饰器的源代码开放封闭原则 2、为装饰器函数添加新功能后不能修改函数的调用方式 三、实现装饰器的知识储备 装饰器 高阶函数 函数嵌套 闭包 四、高阶函数  高阶函数的定义 1、函数接收的参数是一个函数名 2、函数的返回值是一个函数名 3、满足上述条件任意一个都可以称为之高阶函数 1 def foo():2 print(我的函数名作为参数传给高阶函数)3 def gao_jie1(func):4 print(我就是高阶函数1,我接收的参数名是%s %func)5 func()6 7 def gao_jie2(func):8 print(我就是高阶函数2,我的返回值是%s %func)9 return func 10 11 gao_jie1(foo) 12 gao_jie2(foo) 高阶函数示范 1 #高阶函数应用1:把函数名当做参数传给高阶函数2 import time3 def foo():4 print(from the foo)5 6 def timmer(func):7 start_timetime.time()8 func()9 stop_timetime.time() 10 print(函数%s 运行时间是%s %(func,stop_time-start_time)) 11 timmer(foo) 12 #总结:我们确实为函数foo增加了foo运行时间的功能,但是foo原来的执行方式是foo(),现在我们需要调用高阶函数timmer(foo),改变了函数的调用方式 把函数名当做参数传给高阶函数 1 #高阶函数应用2:把函数名当做参数传给高阶函数,高阶函数直接返回函数名2 import time3 def foo():4 print(from the foo)5 6 def timmer(func):7 start_timetime.time()8 return func9 stop_timetime.time() 10 print(函数%s 运行时间是%s %(func,stop_time-start_time)) 11 footimmer(foo) 12 foo() 13 #总结:我们确实没有改变foo的调用方式,但是我们也没有为foo增加任何新功能 函数返回值是函数名   高阶函数总结 1、函数接收的参数是一个函数名   作用在不修改函数源代码的前提下为函数添加新功能   不足会改变函数的调用方式 2、函数的返回值是一个函数名   作用不修改函数的调用方式   不足不能添加新功能  五、函数嵌套 def foo(name):print(from foo %s %name)def ret():print(from ret)def bar():print(from bar)bar()ret()foo(Albert)六、闭包 闭包在一个作用域里放入定义变量想当于打了一个包 def foo(name):def ret():print(123%s%name)def bar():print(456%s%name)bar()ret()foo(Albert)七、没有参数的装饰器 没有参数的装饰器 高阶函数 函数嵌套   基本框架 # 这就是一个实现装饰器最基本的架子 def timer(func):def wrapper():func()return wrapper加上参数 def timer(func):def wrapper(*args, **kwargs):func(*args, **kwargs)return wrapper加上功能 import timedef timer(func):def wrapper(*args, **kwargs):s_time time.time()func(*args, **kwargs)e_time time.time()print(函数【%s】运行的时间是%s%(func, e_time - s_time))return wrapper加上返回值 import timedef timer(func):def wrapper(*args, **kwargs):s_time time.time()res func(*args, **kwargs)e_time time.time()print(函数【%s】运行的时间是%s%(func, e_time - s_time))return resreturn wrapper使用装饰器 def cal(array):res 0for i in array:res ireturn rescal timer(cal) a cal(range(10)) print(a)语法糖 timer # timer cal timer(cal) def cal(array):res 0for i in array:res ireturn resa cal(range(10)) print(a)八、装饰器应用示例 1 user_list[2 {name:Albert,passwd:123},3 {name:Seven,passwd:123},4 {name:Eric,passwd:123},5 {name:Mary,passwd:123},6 ]7 8 current_user{username:None,login:False}9 10 def auth_deco(func): 11 def wrapper(*args,**kwargs): 12 if current_user[username] and current_user[login]: 13 resfunc(*args,**kwargs) 14 return res 15 usernameinput(用户名: ).strip() 16 passwdinput(密码: ).strip() 17 18 for index,user_dic in enumerate(user_list): 19 if username user_dic[name] and passwd user_dic[passwd]: 20 current_user[username]username 21 current_user[login]True 22 resfunc(*args,**kwargs) 23 return res 24 else: 25 print(用户名或者密码错误,重新登录) 26 27 return wrapper 28 29 auth_deco 30 def index(): 31 print(欢迎来到主页面) 32 33 auth_deco 34 def home(): 35 print(这里是你家) 36 37 def shopping_car(): 38 print(查看购物车啊亲) 39 40 def order(): 41 print(查看订单啊亲) 42 43 44 index() 45 # home() 无参装饰器 1 user_list[2 {name:Albert,passwd:123},3 {name:Seven,passwd:123},4 {name:Eric,passwd:123},5 {name:Mary,passwd:123},6 ]7 8 current_user{username:None,login:False}9 def auth(auth_typefile): 10 def auth_deco(func): 11 def wrapper(*args,**kwargs): 12 if auth_type file: 13 if current_user[username] and current_user[login]: 14 resfunc(*args,**kwargs) 15 return res 16 usernameinput(用户名: ).strip() 17 passwdinput(密码: ).strip() 18 19 for index,user_dic in enumerate(user_list): 20 if username user_dic[name] and passwd user_dic[passwd]: 21 current_user[username]username 22 current_user[login]True 23 resfunc(*args,**kwargs) 24 return res 25 else: 26 print(用户名或者密码错误,重新登录) 27 elif auth_type ldap: 28 print(巴拉巴拉小魔仙) 29 resfunc(*args,**kwargs) 30 return res 31 return wrapper 32 return auth_deco 33 34 35 #auth(auth_typefile)就是在运行一个函数,然后返回auth_deco,所以auth(auth_typefile) 36 #就相当于auth_deco,只不过现在,我们的auth_deco作为一个闭包的应用,外层的包auth给它留了一个auth_typefile参数 37 auth(auth_typefile) 38 def index(): 39 print(欢迎来到主页面) 40 41 auth(auth_typeldap) 42 def home(): 43 print(这里是你家) 44 45 def shopping_car(): 46 print(查看购物车啊亲) 47 48 def order(): 49 print(查看订单啊亲) 50 51 index() 52 # home() 带参装饰器  九、超时装饰器 1 import sys,threading,time2 3 class KThread(threading.Thread):4 5 A subclass of threading.Thread, with a kill()6 7 method.8 9 10 11 Come from:12 13 Kill a thread in Python:14 15 http://mail.python.org/pipermail/python-list/2004-May/260937.html16 17 18 19 def __init__(self, *args, **kwargs):20 21 threading.Thread.__init__(self, *args, **kwargs)22 23 self.killed False24 25 26 27 def start(self):28 29 Start the thread.30 31 self.__run_backup self.run32 33 self.run self.__run # Force the Thread to install our trace.34 35 threading.Thread.start(self)36 37 38 39 def __run(self):40 41 Hacked run function, which installs the42 43 trace.44 45 sys.settrace(self.globaltrace)46 47 self.__run_backup()48 49 self.run self.__run_backup50 51 52 53 def globaltrace(self, frame, why, arg):54 55 if why call:56 57 return self.localtrace58 59 else:60 61 return None62 63 64 65 def localtrace(self, frame, why, arg):66 67 if self.killed:68 69 if why line:70 71 raise SystemExit()72 73 return self.localtrace74 75 76 77 def kill(self):78 79 self.killed True80 81 82 83 class Timeout(Exception):84 85 function run timeout86 87 88 89 def timeout(seconds):90 91 超时装饰器指定超时时间92 93 若被装饰的方法在指定的时间内未返回则抛出Timeout异常94 95 def timeout_decorator(func):96 97 真正的装饰器98 99 100 101 def _new_func(oldfunc, result, oldfunc_args, oldfunc_kwargs): 102 103 result.append(oldfunc(*oldfunc_args, **oldfunc_kwargs)) 104 105 106 107 def _(*args, **kwargs): 108 109 result [] 110 111 new_kwargs { # create new args for _new_func, because we want to get the func return val to result list 112 113 oldfunc: func, 114 115 result: result, 116 117 oldfunc_args: args, 118 119 oldfunc_kwargs: kwargs 120 121 } 122 123 thd KThread(target_new_func, args(), kwargsnew_kwargs) 124 125 thd.start() 126 127 thd.join(seconds) 128 129 alive thd.isAlive() 130 131 thd.kill() # kill the child thread 132 133 if alive: 134 135 raise Timeout(ufunction run too long, timeout %d seconds. % seconds) 136 137 else: 138 139 return result[0] 140 141 _.__name__ func.__name__ 142 143 _.__doc__ func.__doc__ 144 145 return _ 146 147 return timeout_decorator 148 149 150 timeout(5) 151 152 def method_timeout(seconds, text): 153 154 print(start, seconds, text) 155 156 time.sleep(seconds) 157 158 print(finish, seconds, text) 159 160 return seconds 161 162 163 method_timeout(6,asdfasdfasdfas) 查看代码   转载于:https://www.cnblogs.com/albert0924/p/8760575.html
http://www.pierceye.com/news/588400/

相关文章:

  • 武进区城乡建设局网站组建网站建设团队
  • 做淘宝链接模板网站广安网站建设兼职
  • 受欢迎的网站建设平台有用的网站地址
  • 网站建设推广岗位网站建设法规
  • ftp两个网站子域名的绑定郑州网站推广公司
  • 安庆网站设计哈尔滨工程招标信息网
  • 精湛的佛山网站设计太原网站建设培训
  • 邹城市住房和建设局网站深圳比较好的vi设计公司
  • 企业网站建设维护方案一元购物网站怎么做
  • 网站建设优化公司哪家好兰州做网站公司es5188
  • jsp网站开发工资住建网查询
  • 长沙建网站需要多少钱夹江移动网站建设
  • 淄博网站制作高端网站后台任务
  • 营销型网站源码成都网站建设seo
  • 天津网上商城网站建设专业的猎头公司
  • 西平县住房城乡建设局网站西部数码网站管理助手3.0
  • 承德市网站建设WordPress电影资源分享下载站
  • 专注于网络推广及网站建设wordpress离线发布功能
  • 营销型网站案例提高wordpress打开速度
  • 怎么样做一个网站自己个人网站后台怎么做
  • 源码站免费找客户网站
  • idc空间商网站源码知名的网站建设
  • 什么叫网站降权建设网站租服务器
  • 网站后台模板怎样使用站长平台
  • 写一个app需要多少钱龙岩seo包年系统排行榜
  • 科技公司企业网站建设手机360网站seo优化
  • 做翻译 英文网站黑色时尚橱柜网站源码
  • wordpress 主机要求珠海百度推广优化
  • 台山网站建设哈尔滨网站建设收费
  • 卖主机 服务器的网站wordpress自动标签内联