装饰器

下午看视频的时候,突然用到了之前学过的装饰器的知识点,大脑快速运转中,并没有很清晰的想出来该如何写,只记得一个闭包函数,现在来重新复习一遍

#装饰器的模板
def log_auth(func):
    def inner(*args,**kwargs)
     res = func(*args,**kwargs)
     return res
  return inner

装饰器的特点无非:1 调用原函数。2,为原函数增添新功能。 不管是登录验证 还是计算程序运行时间

def wrapper(func):
    def inner(*args,**kwargs):
    #在调用原函数之前为其增加登录验证功能
    username = input("用户名:").strip()
    password = input("密码:").strip()  
    if username == "jason" and password == "123":
        res = func(*args,**kwargs)
        return res
    else:
        print("用户名密码不正确"return inner

res = func(*args,**kwargs) 相当于是原函数的调用 只需要 是在登录前加 还是登录后加以调用的问题 在之前写代码还是在之后写代码的问题。

以上为无参装饰器

下面是有参装饰器

def outter(xx = "xxx"):
    def wrapper(func):
        def inner(*args,**kwargs):
            res = func(*args,**kwargs):
            return res
        return inner
    return wrapper    



@outter(xx="xxx")
被修饰函数

与无参唯一的不同 就是在外包了层函数,并且将 内部所用到的参数 通过外包函数 来传递给内层;在使用方面仅需要@函数名(传参)   注意内部的原理 

其中语法糖等知识也要注意回顾

 

posted @ 2021-05-31 21:09  不想拖累他人  阅读(44)  评论(0)    收藏  举报