zoukankan      html  css  js  c++  java
  • python-闭包应用二传递函数

    #! /usr/bin/env python
    # -*- coding:utf-8 -*-
    
    def my_sum(*arg):
        return sum(arg)
    
    def my_average(*arg):
        return sum(arg)/len(arg)
    
    #print(my_sum(1,2,3,4,5))
    #print(my_sum(1,2,3,4,5,'6'))  #报错。不支持的类型
    #print(my_average(1,2,3,4,5))
    #print(my_average()) # 报错长度为0除以0所以报错
    
    
    
    
    #为了提高代码的健壮性需要加入判断
    '''
    def my_sum(*arg):
        if len(arg) == 0:
            return 0
        for val in arg:
            if not isinstance(val,int):
                return 0
        return sum(arg)
    
    def my_average(*arg):
        if len(arg) == 0:
            return 0
        for val in arg:
            if not isinstance(val,int):
                return 0
        return sum(arg)/len(arg)
    '''
    
    
    
    # 为了提高上述判断代码的复用性,可以使用闭包来实现
    
    def my_sum(*arg):
        return sum(arg)
    
    def my_average(*arg):
        return sum(arg)/len(arg)
    
    
    
    
    def dec(func):
        def in_dec(*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)
    #sum = my_sum(1,2,3)
    my_average = dec(my_average)
    print(my_sum(1,2,3,4,5))
    print(my_sum(1,2,3,4,5,'6'))  
    print(my_average(1,2,3,4,5))
    print(my_average())
  • 相关阅读:
    团队项目-选题报告
    1
    第二次结对编程作业
    第2组 团队展示
    第02组 Alpha冲刺(4/6)
    第02组 Alpha冲刺(3/6)
    第02组 Alpha冲刺(2/6)
    第02组 Alpha冲刺(1/6)
    第02组 团队GIT现场编程实战
    团队项目-需求分析报告
  • 原文地址:https://www.cnblogs.com/wgDream/p/7326352.html
Copyright © 2011-2022 走看看