zoukankan      html  css  js  c++  java
  • 关于python装饰器

    关于python装饰器,不是系统的介绍,只是说一下某些问题

    1 首先了解变量作用于非常重要

    2 其次要了解闭包

    1 def logger(func):
    2      def inner(*args, **kwargs):
    3          print "Arguments were: %s, %s" % (args, kwargs)
    4          return func(*args, **kwargs)
    5      return inner

    在这里面,func是被装饰的函数,*args, **kwargs是 func要接收的参数

    3 装饰器

    @logger
     def foo1(x, y=1):
         return x * y
    @logger
     def foo2():
         return 2
    foo1(5, 4)
    #Arguments were: (5, 4), {}
    #20
    foo1(1)
    #Arguments were: (1,), {}
    #1
    foo2()
    #Arguments were: (), {}
    #2

    3.1装饰器中传参数

    原理:多一层闭包

    def outer(arg):  
        def wraper(func):  
            def inner():  
                print("before %s called [%s]." % (func.__name__, arg))  
                func()  
                print("  after %s called [%s]." % (func.__name__, arg))  
            return inner
        return wraper

    然后装饰器可以写成

    @outer("mytest")  
    def foo():  
        print(" foo() called.")  
     
    foo()  
  • 相关阅读:
    A 第一课 链表
    CSS基础_01:
    html基础(2)
    冒泡_选择算法
    高等数学以及Python 实现
    ubuntu18.04 镜像下载
    MatplotLib 第二部分
    一件很好笑的事情
    HIVE文件
    一个关于消息结构体的讨论
  • 原文地址:https://www.cnblogs.com/fuzzier/p/6229958.html
Copyright © 2011-2022 走看看