对Python实现累加函数的方法详解


Posted in Python onJanuary 23, 2019

这个需求比较奇怪,要求实现Sum和MagaSum函数,实现以下功能

Sum(1) =>1
Sum(1,2,3) =>6
MegaSum(1)() =>1
MegaSum(1)(2)(3)() =>6

实际上Sum就是Python自建的sum函数,它支持变参,变参怎么实现,自然是*args,所以很容易写出雏形:

Sum

def Sum(*args):
  count = 0
  for i in args:
    count+=i
  return count

第二个函数就有点皮了,它要求有参数的时候,返回的值是一个函数的引用,无参数的时候,返回的是结果。

要实现可以有或无参数,那么首想到的是Python的默认参数。我们可以默认参数值是None,当主动传入参数时,返回一个函数的引用,否则,返回结果。这里用到了Python可变类型作为函数参数时的一些特性。代码如下:

def Sum(*args):
  s = 0
  for i in args:
    s+=i
  return s

def megaSum(s=None,l=[]):
  if not s:
    ret = Sum(*l)
    l.clear() # 清空,否则之后计算的结果值会不对。
    return ret
  else:
    l.append(s)
    return megaSum
print(Sum(1,2,3))
print(megaSum(1)(2)(3)())
print(megaSum(1)())

实际上还是有一些Bug的,原因是只有当不传参数的时候才会清空l的内容,这样就会造成如

print(megaSum(1)(2)(3)) #<function megaSum at 0x7fb533743a60>
print(megaSum(1)()) #7

计算结果不准确。这个怎么解决,暂时还没想到,如果有朋友知道可以告诉我。

以上这篇对Python实现累加函数的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
打印出python 当前全局变量和入口参数的所有属性
Jul 01 Python
python脚本实现查找webshell的方法
Jul 31 Python
python测试驱动开发实例
Oct 08 Python
Python找出list中最常出现元素的方法
Jun 14 Python
Python requests库用法实例详解
Aug 14 Python
Django 模型类(models.py)的定义详解
Jul 19 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
python自动结束mysql慢查询会话的实例代码
Oct 27 Python
Python获取统计自己的qq群成员信息的方法
Nov 15 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
Python操作Excel的学习笔记
Feb 18 Python
如何用Python和JS实现的Web SSH工具
Feb 23 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 #Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 #Python
selenium+python自动化测试之环境搭建
Jan 23 #Python
在python带权重的列表中随机取值的方法
Jan 23 #Python
Appium+Python自动化测试之运行App程序示例
Jan 23 #Python
Python+OpenCV图片局部区域像素值处理详解
Jan 23 #Python
Python实现查找数组中任意第k大的数字算法示例
Jan 23 #Python
You might like
完美解决PHP中文乱码
2009/11/26 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
php封装的验证码工具类完整实例
2016/10/19 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
js 删除数组的几种方法小结
2014/02/21 Javascript
Jquery 实现grid绑定模板
2015/01/28 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
理解javascript中的闭包
2017/01/11 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
python迭代器的使用方法实例
2013/11/21 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
Python中super函数的用法
2017/11/17 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python常见的pandas用法demo示例
2019/03/16 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
HTTP状态码详解
2021/03/18 杂记
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
工程班组长岗位职责
2013/12/30 职场文书
公司晚会主持词
2014/03/22 职场文书
骨干教师考核方案
2014/05/09 职场文书
小学生读书活动总结
2014/06/30 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
针对吵架老公保证书
2015/05/08 职场文书