装饰器

作者: syp_xp | 来源:发表于2017-05-29 00:49 被阅读17次

    代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)

    >>> def now():
    ...     print('2015-3-25')
    ...
    >>> f = now
    >>> f()
    2015-3-25
    

    装饰器的定义及使用

    import functools
    
    def log(func):
        @functools.wraps(func)
        def wrapper(*args, **kw):
            print('call %s():' % func.__name__)
            return func(*args, **kw)
        return wrapper
    
    @log
    def now():
        print('2015-3-25')
    

    带参数的装饰器函数及使用

    import functools
    
    def log(text):
        def decorator(func):
            @functools.wraps(func)
            def wrapper(*args, **kw):
                print('%s %s():' % (text, func.__name__))
                return func(*args, **kw)
            return wrapper
        return decorator
    
    @log('execute')
    def now():
        print('2015-3-25')
    

    @functools.wraps(func)实际上实现了wrapper.name = func.name

    相关文章

      网友评论

          本文标题:装饰器

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