美文网首页
python 装饰器

python 装饰器

作者: hehehehe | 来源:发表于2020-10-20 11:02 被阅读0次

    装饰器的作用: 在不改变原有功能代码的基础上,添加额外的功能,如用户验证等。
    @wraps(view_func)的作用: 不改变使用装饰器原有函数的结构(如name, doc)

    def say_hello(contry):
      def wrapper(func):
        def deco(*args, **kwargs):
          if contry == "china":
            print("你好!")
          elif contry == "america":
            print('hello.')
          else:
            return
    
          # 真正执行函数的地方
          func(*args, **kwargs)
        return deco
      return wrapper
    
    @say_hello("china")
    def chinese():
      print("我来自中国。")
    
    @say_hello("america")
    def american():
      print("I am from America.")
    
    
    if __name__ == '__main__':
      american()
      print("------------")
      chinese()
    
      print("============")
    
      say_hello("hello")(american())
      say_hello("hello")(chinese())
    
    
    hello.
    I am from America.
    ------------
    你好!
    我来自中国。
    ============
    hello.
    I am from America.
    你好!
    我来自中国。
    [Finished in 0.3s]
    
    
    def say_hello(contry):
      print(1)
      def wrapper(func):
        print(2)
        def deco(*args, **kwargs):
          print(3)
          if contry == "china":
            print("你好!")
          elif contry == "america":
            print('hello.')
          else:
            return
    
          # 真正执行函数的地方
          func(*args, **kwargs)
        return deco
      return wrapper
    
    @say_hello("china")
    def chinese():
      print("我来自中国。")
    
    @say_hello("america")
    def american():
      print("I am from America.")
    
    
    
    
    if __name__ == '__main__':
      american()
      print("------------")
      chinese()
    
      # print("============")
    
      # say_hello("hello")(american())
      # say_hello("hello")(chinese())
    
    
    1
    2
    1
    2
    3
    hello.
    I am from America.
    ------------
    3
    你好!
    我来自中国。
    [Finished in 0.9s]
    

    相关文章

      网友评论

          本文标题:python 装饰器

          本文链接:https://www.haomeiwen.com/subject/haarmktx.html