python 测试:wraps

任务:

现有两个函数:

def print1():
    print("I am print1")
def print2():
print("I am print2")

使用wrap,在执行print1之前输出:I am wraper1

在执行print2之前输出:I am wraper2 + 自定义文字

解答:

from functools import wraps

#无参wrap
def log1(func):
    @wraps(func)
    def wraper(*args,**kwargs):
        print("I am wraper1")
        return func(*args, **kwargs)
    return wraper

@log1
def print1():
    print("I am print1")


# 有参数
def log2(txt):
    def log3(func):
        @wraps(func)
        def wraper1(*args, **kwargs):
            print("I am wraper2",txt)
            return func(*args, **kwargs)
        return wraper1
    return log3

@log2('123')
def print2():
    print("I am print2")


print1()
print2()

 

 

 
posted @ 2018-01-22 08:29  田云  阅读(203)  评论(0编辑  收藏  举报