Discuss / Python / 作业

作业

Topic source

黄艳fly

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

看了其他同学的代码,才恍然大悟,

1.判断传入的是函数还是普通参数

2.若是普通参数,需要定义3层函数;若是函数,则只需要2层

def log(text):

    if isinstance(text,str):#判断是否带有参数

        def decorator(func):

            @fs.wraps(func)

            def wrapper(*args):

                print(text,func.__name__)

                return func(*args)

            return wrapper

        return decorator

    else:#没有传入参数时,text为func,只有两层,不需要装饰函数

        @fs.wraps(text)

        def wrapper(*args):

            print('call',text.__name__)

            return text(*args)

        return wrapper    

@log

def calc_sum(*args):

    s=0

    for n in args:

        s=s+n

    return s

calc_sum(10,2,300)


  • 1

Reply