Discuss / Python / work

4Neutrino

#1 Created at ... [Delete] [Delete and Lock User]
import functools

def log(func):
    @functools.wraps(func)
    def wrp(*args, **kw):
        print('begin call', func.__name__)
        return func(*args, **kw)
        print('end call', func.__name__)
    return wrp

@log
def now():
    print('2017/01/29')

now()
import functools

def log(arg):
    if isinstance(arg, str):
        def dec(func):
            @functools.wraps(func)
            def wrp(*args, **kw):
                print('%s %s():' % (arg, func.__name__))
                return func(*args, **kw)
            return wrp
        return dec
    else:
        @functools.wraps(arg)
        def wrp(*args, **kw):
            print('call %s():' % arg.__name__)
            return arg(*args, **kw)
        return wrp

@log
def whoru():
    print('i am who i am')
whoru()

@log('EXEC')
def whoru():
    print('i am who i am')
whoru()

kkneedTime

#2 Created at ... [Delete] [Delete and Lock User]

第一题这个在begin call 后使用return 语句就结束了程序,不会往下执行了,所以后面的end call日志是没法打印出来的

被廖老师的范例误导了,思考了和尝试了好久“如何在return以后的情况下接着输出 end call”。后来发现把return func中的return去掉就可以了。。。


  • 1

Reply