Python基础入门(四)


函数即变量高阶函数+嵌套函数》装饰器

装饰器:

定义:本质就是函数,(装饰其他函数)就是为其他函数添加附加功能

1.不能修改被装饰函数的源代码

2.不能修改被装饰函数的调用方式

高阶函数+嵌套函数
把一个函数名当做实参传给另外一个函数
返回值中包含函数名(不修改函数的调用方式)

#####没有修改被装饰函数的源代码但是改变了函数调用方式
def login():
    print("######test1#######")

def auth(func):
    func()
    print("######auth#######")
c = auth(login)

#######修改被装饰函数的源代码+没有修改被装饰函数的调用方式
def login():
    print("######test1#######")

def auth(func):
    def funnew():
        func()
        print("######auth#######")
    return funnew
login = auth(login)
login()
####等价于:
def auth(func):
    def funnew():
        func()
        print("######auth#######")
    return funnew

@auth  #等价于login = auth(login)
def login():
    print("######test1#######")
login()

#以上是借助Python@语法,把decorator置于函数的定义处


#如果说有多个函数需要同一个@auth,有的被装饰的函数带有参数,而有的函数却没有参数?

def auth(func):
    def funnew(*args,**kwargs):
        func(*args,**kwargs)
        print("######auth#######")
    return funnew

@auth  #等价于login = auth(login)
def login():
    print("######test1#######")

@auth
def login1(name,age):
    print("######login1#######",name,age)

login()
login1("lili",23)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值