对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自动化测试实例解析
Sep 28 Python
python中二维阵列的变换实例
Oct 09 Python
Python通过poll实现异步IO的方法
Jun 04 Python
Python实现将xml导入至excel
Nov 20 Python
Python实现字符串格式化输出的方法详解
Sep 20 Python
在Pycharm中对代码进行注释和缩进的方法详解
Jan 20 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
Python实现发票自动校核微信机器人的方法
May 22 Python
使用Python将语音转换为文本的方法
Aug 10 Python
Python 如何查找特定类型文件
Aug 17 Python
详解python3 GUI刷屏器(附源码)
Feb 18 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(一)
2012/03/21 PHP
ThinkPHP入口文件设置及相关注意事项分析
2014/12/05 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
php生出随机字符串
2017/07/06 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
Mootools 1.2教程 函数
2009/09/15 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
Python文件读取的3种方法及路径转义
2015/06/21 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
浅谈python迭代器
2017/11/08 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
python实现linux下抓包并存库功能
2018/07/18 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
详解python程序中的多任务
2020/09/16 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
市场营销专业推荐信
2013/11/03 职场文书
毕业生找工作的求职信范文
2013/12/24 职场文书
经销商订货会主持词
2014/03/27 职场文书
年终奖发放方案
2014/06/02 职场文书
商铺租房协议书范本
2014/12/04 职场文书
Python实现老照片修复之上色小技巧
2021/10/16 Python