Python不归路_装饰器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python不归路_装饰器相关的知识,希望对你有一定的参考价值。

装饰器上节回顾

  装饰器主要是由高阶函数和嵌套函数组成的,它由有两大特性:1、不改变被装饰函数原代码;2、不改变被装饰函数调用方式

  高阶函数主要有两大特性:1、被装饰函数作为高阶函数的参数;2、return函数

  嵌套函数特性:在一个函数内,新定义一个函数

  下面我们来看一段代码,给login_index()和login_mang()添加用户密码认证的功能的装饰器。

user=gally‘ #定义用户名   
password=123‘  #定义密码
def auth(func):  #定义装饰器   被装饰函数作为高阶函数参数
    def deco(*args,**kwargs):  #嵌套函数
        name=input(用户名:)
        passwd=input(密码:)
        if name==user and passwd == password:
            func(*args,**kwargs)
        else:
            pass
    return deco  #返回函数    return函数
@auth # login_index=auth(login_index)=deco
def login_index():
    print(welcome index)
@auth
def login_mang():
    print(welcome mang)
login_index()  #执行
login_mang()  #执行

  执行结果

用户名:gally
密码:123
welcome index
用户名:gally
密码:123
welcome mang

  在这段代码中,没有修改login_index()和login_mang()原代码内容,也没有改变login_index()和login_mang()函数调用方式,同时给login_index()和login_mang()函数添加了用户认证的功能。这就是装饰器,也叫语法糖。

 

-------不会开发的运维不是好厨师


以上是关于Python不归路_装饰器的主要内容,如果未能解决你的问题,请参考以下文章

Python不归路_迭代器

python使用上下文对代码片段进行计时,非装饰器

python学习5_装饰器

python_装饰器

python-装饰器

python_装饰器——迭代器——生成器