Python基础入门(四)

来源:互联网 发布:新纪元软件无法安装 编辑:程序博客网 时间:2024/04/30 03:25

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

装饰器:

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

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 funnewlogin = 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#######")@authdef login1(name,age):    print("######login1#######",name,age)login()login1("lili",23)





0 0