Discuss / Python / 习题

习题

Topic source

第一题

import functools


def log(fn):
    @functools.wraps(fn)
    def wrapper(*args, **kw):
        print('begin call %s():' % fn.__name__)
        fn(*args, **kw)
        print('end call %s():' % fn.__name__)
    return wrapper


@log
def now():
    print('2017-03-25')


now()

第二题

import functools


def log(text=None):
    def decorator(fn):
        @functools.wraps(fn)
        def wrapper(*args, **kw):
            if text == None:
                print("%s():" % fn.__name__)
            else:
                print("%s %s():" % (text, fn.__name__))
            return fn(*args, **kw)
        return wrapper
    return decorator


@log('execute')
def _on():
    print('2017-12-05')


@log()
def _off():
    print('2017-12-05')


_on()

_off()

  • 1

Reply