装饰器
下午看视频的时候,突然用到了之前学过的装饰器的知识点,大脑快速运转中,并没有很清晰的想出来该如何写,只记得一个闭包函数,现在来重新复习一遍
#装饰器的模板 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") 被修饰函数
与无参唯一的不同 就是在外包了层函数,并且将 内部所用到的参数 通过外包函数 来传递给内层;在使用方面仅需要@函数名(传参) 注意内部的原理
其中语法糖等知识也要注意回顾
浙公网安备 33010602011771号