对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中各种方法的运作原理
Jun 15 Python
python计算文本文件行数的方法
Jul 06 Python
Python整型运算之布尔型、标准整型、长整型操作示例
Jul 21 Python
分析python请求数据
Aug 19 Python
Python解决两个整数相除只得到整数部分的实例
Nov 10 Python
使用CodeMirror实现Python3在线编辑器的示例代码
Jan 14 Python
python递归法解决棋盘分割问题
Jul 17 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
Python3操作MongoDB增册改查等方法详解
Feb 10 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
Mar 05 Python
Keras-多输入多输出实例(多任务)
Jun 22 Python
python爬虫框架feapde的使用简介
Apr 20 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
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
thinkphp3.x中cookie方法的用法分析
2016/05/19 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
Python LMDB库的使用示例
2021/02/14 Python
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
税务会计岗位职责
2014/02/18 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
党员评议自我评价
2015/03/03 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python
Python如何用re模块实现简易tokenizer
2022/05/02 Python
解决Oracle数据库用户密码过期
2022/05/11 Oracle
JS高级程序设计之class继承重点详解
2022/07/07 Javascript