装饰器

#######装饰器

装饰器:修饰别人的工具,修饰添加功能,工具指的是函数
装饰器本身可以是任何可调用对象,被装饰的对象也可以是任意可调用对象

为什么要用装饰器:
开放封闭原则:对修改是封闭的,对扩展是开放的
装饰器就是为了在不修改被装饰对象的源代码以及调用方式的前提下,为期添加新功能

总结来说就是 在不改变 函数主体源码的情况下 增加或者修改功能

@zhonglei 下面的 函数 就 相当于给 zhonglei函数 传参
@zhonglei() 等于二级装饰器 zhonglei() 中的括号 在上面有定义

import time
def zhonglei(A='YES'):
    def timmer(fuc):
        def wapper(*args,**kwargs):
            if A == 'NO':
                start=time.time()
                res=fuc(*args,**kwargs)
                stop=time.time()
                print('用时',(stop-start))
            else :
                res = fuc(*args, **kwargs)
                # print  (res)
                return res
        return wapper
    return timmer

@zhonglei()
def foo(a):
    time.sleep(1)
    print ("这里是原版需求")
    return a

JG=foo('la')

匿名函数

lambda

匿名函数
f=lambda x :x*2
JG=f(2)
print (JG)


但是这样违背了 匿名函数的初衷
所以 lambda x :x*2 有独特的用处
#备注: 第一个x 相当于 函数 括号中的穿值,冒号后面相当于return