Python闭包

来源:互联网 发布:淘宝双11外围流量大吗 编辑:程序博客网 时间:2024/06/04 00:09
def my_sum(*arg):
    print('in my_sum')
    return sum(arg)


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




def dec(func):
    def in_dec(*arg):
        print('in dec arg',arg)
        if len(arg) == 0:
            return 0
        for val in arg:
            if not isinstance(val,int):
                return 0
        return func(*arg)
    return in_dec

my_sum = dec(my_sum)           1
print(my_sum(1,2,3,4,5))            2

print(my_sum(1,2,3,4,5,'6'))

分析:有同有异用闭包,把同放在闭包中,把异放在函数中。闭包函数执行过程:1语句执行两步(函数处理没有具体值得应用,为应用铺垫),1)调用dec并func=my_sum ,返回in_dec给my_sum即my_sum=in_dec,执行2完成的调用in_dec后,return使调用1)中func即my_sum。

原创粉丝点击