919补考英语,啊啊啊啊啊,又是秃头的一天

装饰器:概念已知一个函数,如果要给该函数增加新的功能
#但是不希望修改该函数,
# 在python中,这种在代码运行期间动态执行的机制被称为装饰器
#装饰器起到的作用:为已经存在的函数或类添加额外的功能
#装饰器的本质:实际上就是一个闭包
#闭包的概念:内部函数访问外部函数中的变量
def mm(l):
    def pppp():
        print(l)
    return pppp
ggg=mm(12)
print(ggg)#实际上就是pppp在计算机的存储位置
ggg()#相当于调用pppp函数
print("")
#装饰器
#定义闭包,给外部函数设置参数,
# 1,参数表示需要被装饰的函数,命名一般用:f/fun/func
# 2在内部函数中调用被装饰的函数,同时增加新的功能
def smss():#被装饰的函数
    print("你好呀,吃了吗?")



def mmm(fun):
    def pppp():
        # 2在内部函数中调用被装饰的函数,同时增加新的功能
        fun()#调用原函数
        print("bus running-=-=-=")
        print(fun)
        #新增的功能
        #新增的功能可以和调用原函数调用顺序,不影响
    return pppp
ff=mmm(smss)#需要装饰,所以将sms传参给mm
ff()#调用pppp函数
#1,在这里mmm就是装饰器的名称[外部函数的函数名]
#2,pppp实际上就是装饰器的核心器的核心功能[调用新功能,新增新的函数]
#3,再pppp中,新增功能还是调用原函数,理论上没有先后顺序
#一般需要根据具体的需求决定

#方式二,用@xxx剋将一个装饰器作用于一个函数上,只需要将@xxx
#书写在一个函数的前面,则表示xxx装饰器装饰的指定函数
#@xxx:xxx表示装饰器的名称[外部函数的函数名]
#注意:如果使用@xxx加载装饰器则表示装饰器先存在,然后才能使用
def outteer(p):
    def inner():
        p()
        print("111")
    return inner
@outteer
def mu():
    print("111222")
mu()
print('')

def wsw(av):
    def ppp():
        av()
        print("巫毒娃娃")
    return ppp
@wsw
def qqq():
    print("mmmmmmmmmm")
qqq()
print("")
#通过一个闭包,在不改变函数原本的情况下给原函数增加新的功能
def ggb(aaaaa):
    print("ggbccs")
    def mmmm():
        aaaaa()
        print(",.,.")
    return mmmm
@ggb
def jjj():
    print("yyyyy")
jjj()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值