装饰器使用

2020/05/01 python 装饰器 共 605 字,约 2 分钟

介绍装饰器的写法和使用

1.不带参数装饰器

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')

2.带参数装饰器

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('hello')
def now():
    print('2015-3-25')

3.类装饰器

class Entry(object):
    def __init__(self, f):
        self.f = f

    def __call__(self):
        print("Entering", self.f.__name__)
        self.f()
        print("Exited", self.f.__name__)


@Entry
def func():
    print("inside func1()")

func()

搜索

    内容