python 装饰器

装饰器是一个函数,主要作用是用来包装另一个函数或类(后面才讲) 装饰的目的是在不改变原函数名(或类名) 的情况下,改变被包装对象的行为

装饰器的功能就相当于是一个闭包

函数装饰器

  【1】函数装饰器指装饰器传入的是一个函数,返回的也是一个函数。

  【2】一个函数可以有多个装饰器函数。

   def 装饰器函数名(参数):

    pass 

    return 函数对象

  

  @装饰器函数名

  def 函数名(形参列表):

    pass

    

    @ 装饰器函数名

    def myfun(a, b):

      pass

  等同于:

    def myfun(a, b):

      pass

    myfun = 装饰器函数名(myfun)

应用场景:

  【1】ATM机输入密码,进行权限验证

    输入密码是装饰器函数。输入正确(验证通过)才会让你进行下一步操作,取钱或存钱

In [17]: def privileged_check(fn):
    ...:     def fx(name, x):
    ...:         print("正在检查权限验证")
    ...:         print("请输入密码:")
    ...:         print("密码正确,验证通过")
    ...:         fn(name, x)
    ...:     return fx
    ...:
    ...:
    ...: # 存钱
    ...: @privileged_check
    ...: def save_money(name, x):  # 存钱
    ...:     print(name, '存钱:', x, '')
    ...:
    ...: # 取钱
    ...: @privileged_check
    ...: def withdraw(name, x):
    ...:     print(name, '取钱:', x, '')
    ...:
    ...:
    ...: # ---调用
    ...: save_money('小张', 200)
    ...: save_money('小赵', 500)
    ...: withdraw('小杨', 300)
正在检查权限验证
请输入密码:
密码正确,验证通过
小张 存钱: 200 元
正在检查权限验证
请输入密码:
密码正确,验证通过
小赵 存钱: 500 元
正在检查权限验证
请输入密码:
密码正确,验证通过
小杨 取钱: 300 元

 

    

 

posted @ 2020-12-19 17:33  昱成  阅读(65)  评论(0编辑  收藏  举报