import time def DecoUserPrint(UserFunc):#定义一个DecoUserPrint接收参数的多重方法 def DecoPrint(): StartTime = time.time() UserFunc()#执行DecoPrint接收的方法 OverTime = time.time() print(OverTime-StartTime) return DecoPrint @DecoUserPrint#为下方的,方法调用装饰器,UserPrint = DecoUse…
python的装饰器简单来说就是函数的一种形式,是为了扩展原来的函数功能而设计的. 装饰器的特别之处在于它的返回值也是一个函数,可以在不改变原有函数代码的基础上添加新的功能 # 先定义一个函数及引用# 思路:# outer 函数相当于 decorator的func参数# outoo 调用decorator,将outer传入到函数当中# 函数返回的是 decorator内部的inner函数 执行outoo相当于执行innerdef decorator(func): def inner(*args,…
装饰器 装饰器就是闭包函数的一种应用场景 一 为何要用装饰器 #开放封闭原则:对修改封闭,对扩展开放 二 什么是装饰器 装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象. 强调装饰器的原则: 1 不修改被装饰对象的源代码 2 不修改被装饰对象的调用方式 装饰器的目标:在遵循1和2的前提下,为被装饰对象添加上新功能 三 装饰器的使用 1. 无参装饰器 def 装饰器名字(func): def wrapper(*args,**kwargs): #func是被装饰的对象,这里…
今日内容 1.有参装饰器 2.无参装饰器 什么是装饰器? 用来为被装饰对象添加新功能的工具. 注:装饰器可以是任意可调用对象,被装饰对象也可以是任意可调用对象. 为何要用装饰器? 开放封闭原则:对修改封闭,对扩展开放 装饰器的实现需要遵循两大原则: 1.不修改被装饰对象的源代码 2.不修改装饰器对象的调用方式 有参装饰器模板: def outter(func): def warpper(*args,**kwargs): res=func(*args,**kwargs) return res re…
有参装饰器 def timmerout(flag1): #flag1 =flag def timmer(f): def inner(*args,**kwargs): if flag1: start_time = time.time() ret = f(*args,**kwargs) end_time = time.time() print('此函数的执行效率%s' % (end_time - start_time)) return ret else: ret = f(*args, **kwarg…
一.global与nonlocal #global x = 1 def f1(): global x # 声明此处是全部变量x x = 2 print(x) f1() # 调用f1后,修改了全局变量x = 2 print(x) # 打印结果为2 # nonlocal def f1(): x = 1 def f2(): nonlocal x # 此处声明使用外层函数的变量x x = 2 # 将外层函数进行了修改 print(x) # f2() print(x) # 因为f1()下的x已经被修改,所…
需求:想要在test_func函数前后执行一些代码   1.第一步(定义函数,将调用原函数,使用新函数替换) def test_func(): return 'test_func' def test_wrapper_func(): print 'before' rt = test_func() print 'after' return rt print test_wrapper_func() 2.第二步(原函数可以定义参数) def test_func(): return 'test_func'…
目录 2. 带参数的装饰器 3. 多个装饰器装饰一个函数 2. 带参数的装饰器 #在装饰器的基础上再套一层 def auth(argv): def wrapper(func): def inner(*args,**kwargs): func(*args,**kwargs) return inner return wrapper @auth() # 可传参 def func(): pass func() #解开: """ wrapper = auth() func = wrap…
python中的无参装饰器和有参装饰器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 装饰器特点: 1>.开放封闭原则,即对扩展是开放的,对修改时封闭的: 2>.装饰器本质可以是任意可调用的对象,被装饰的对象也可以是任意可调用对象: 3>.装饰器的功能是在不修改被装饰器对象源代码以及被装饰器对象的调用方式的前提下为其扩展新功能: 4>.装饰器本质是函数,(即装饰其他函数)就是为其他函数添加附加功能. 一.典型装饰器案例 #!/usr/bin/env python…