对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 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
跟老齐学Python之再深点,更懂list
Sep 20 Python
wxPython学习之主框架实例
Sep 28 Python
Python中列表和元组的使用方法和区别详解
Dec 30 Python
Windows下Python3.6安装第三方模块的方法
Nov 22 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
Aug 12 Python
python 字典的打印实现
Sep 26 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
python mysql中in参数化说明
Jun 05 Python
python 多线程中join()的作用
Oct 29 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图片添加水印例子
2016/07/20 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
javascript URL编码和解码使用说明
2010/04/12 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
微信小程序 wxParse插件显示视频问题
2019/09/27 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
Python实现计算最小编辑距离
2016/03/17 Python
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
详解Python自建logging模块
2018/01/29 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
Django 简单实现分页与搜索功能的示例代码
2019/11/07 Python
python Tensor和Array对比分析
2020/01/08 Python
Python tkinter模版代码实例
2020/02/05 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
警察思想汇报
2014/01/04 职场文书
大学生社会实践方案
2014/05/11 职场文书
学术诚信承诺书
2014/05/26 职场文书
幼儿园课题方案
2014/06/09 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书