Discuss / Python / 作业,请大家帮忙看看

作业,请大家帮忙看看

Topic source

大冰小松

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

def log4(text): def decorator(func): @wraps(func) def wrapper(args, kw): if text: print('%s begin call %s' % (text[0], func.name)) else: print('begin call %s' % func.name) ax = func(*args, kw) print('end call %s' % func.name) return ax return wrapper return decorator

@log4('加法') def increment(x, y): return x + y

@log4() def decrement(x, y): return x - y

print(increment(3, 7)) print(decrement(9, 2))

大冰小松

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

原来要点插入代码。。难怪看着怪怪的

# 作业,打印begin call与end call
def log4(*text):
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kw):
            if text:
                print('%s begin call %s' % (text[0], func.__name__))
            else:
                print('begin call %s' % func.__name__)
            ax = func(*args, **kw)
            print('end call %s' % func.__name__)
            return ax
        return wrapper
    return decorator


@log4('加法')
def increment(x, y):
    return x + y


# 减法
@log4()
def decrement(x, y):
    return x - y

print(increment(3, 7))
print(decrement(9, 2))

小白请教!: text 前面加* 是为什么呢?

ax = func(*args, **kw)
print('end call %s' % func.__name__)
return ax

这里还没有调用 func 就print end call 是不是没有起到 调试的作用? 为啥不在wraper 外面写 print end call


  • 1

Reply