为什么在上节例子中把闭包用装饰器调用后出现Int不能和str类型相加的错误?

# coding: utf-8
def dec(func):
    def in_dec(*args):
        if len(args) == 0:
            return 0
        for val in args:
            if not isinstance(val, int):
                return 0
        return func(*args)
    return in_dec

@dec
def my_sum(*args):
    return sum(args)

def my_average(*args):
    return sum(args) / len(args)

#my_sum = dec(my_sum)
#my_average = dec(my_average)

print (my_sum(1, 2, 3, 4, 5))
print (my_sum(1, 'a', 3, 5, 9))
print (my_average(1, 2, 3, 4, 5))
print (my_average(1, 'a', 3, 5, 9))

#闭包里明明已经对这个进行过滤了啊??


xwwy
浏览 1395回答 1
1回答

清波

修饰了 第一个函数 my_sum(),  没有修饰第二个函数 my_average()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python