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

发布时间:2020-10-26 00:02:44

来源:脚本之家

阅读:120

作者:岚漾忆雨

这个需求比较奇怪,要求实现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)) #

print(megaSum(1)()) #7

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

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

python中累加函数_对Python实现累加函数的方法详解相关推荐

  1. python中str是什么_python的str()字符串类型的方法详解

    字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串,因为内存存数据是一个挨着一个存的,如果增加一个字符串的话,之前的老位置只有一个地方,不够,这是原理性的东西,在其他语言里面也一样 7 ...

  2. 在python中设置密码登录_在python中生成密码

    在python中生成密码 我想在python中生成一些字母数字密码. 一些可能的方法是: import string from random import sample, choice chars = ...

  3. python中class变量_对python 中class与变量的使用方法详解

    python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding ...

  4. python process 函数_Python Process创建进程的2种方法详解

    前面介绍了使用 os.fork() 函数实现多进程编程,该方法最明显的缺陷就是不适用于 Windows 系统.本节将介绍一种支持 Python 在 Windows 平台上创建新进程的方法. Pytho ...

  5. 小程序setdata优化_微信小程序 setData的使用方法详解

    微信小程序 setData的使用方法详解 微信小程序 setData的使用方法详解 最近在使用微信小程序的setData时,遇到了以下问题.如下: 官网文档在使用setData()设置数组对象的某个元 ...

  6. 用java写jsp页面跳转页面跳转_五种 JSP页面跳转方法详解

    相关文章 JAVA,HashSet面试题:本文列举java面试题中关于HashSet的一些知识点 开源混淆工具ProGuard配置详解及配置实例:ProGuard是一个免费的java类文件压缩,优化, ...

  7. 光纤收发器的原理及应用_光纤收发器的工作原理以及使用方法详解!

    原标题:光纤收发器的工作原理以及使用方法详解! 关于光纤收发器的工作原理以及使用方法这块,在这里飞畅科技的小编做了专门的整理,首先,我们来了解下什么是光纤收发器,光纤收发器是一种将短距离的双绞线电信号 ...

  8. coreldraw梯形校正_入门:CorelDraw12智能绘图工具使用方法详解

    今天为大家带来一篇基础教程,就是教大家利用CorelDraw12智能绘图工具使用方法,教程真的很不错,很值得学习,推荐过来,大家一起来学习吧! 大家都知道CorelDRAW 12新增了Smart Dr ...

  9. python中mod运算符_自定义 Python 类中的运算符和函数重载(上)

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 如果你对 Python 中的str对象使用过 + 或 * 运算符,你一定注意到了它的操作与 int 或 f ...

  10. python中的帮助_在Python中使用help帮助

    原博文 2014-10-18 23:21 − 在Python中使用help帮助 >>> import numpy >>> help(numpy.argsort) H ...

最新文章

  1. C++返回一个数的二进制最右边的一位的实现算法(附完整源码)
  2. 操作系统实验报告5:进程的创建和终止
  3. 初级程序员需要接触好的架构代码
  4. vs2005 创建解决方案不显示,解决方案管理器中看不到解决方案节点的解决办法...
  5. python自动化测试环境搭建_(一)Python+Appium自动化测试环境搭建
  6. 寄存器和存储器的区别_汇编语言 第二章 寄存器
  7. 期末Linux课程设计(5)—.netrc.handin部分
  8. hdu--1869--见过最好听的题名附送1870
  9. 【MTSP】基于matlab遗传算法求解多旅行商问题【含Matlab源码 1339期】
  10. php二维数组按照键值排序的方法
  11. RSLogix 5000下载程序方法
  12. 计算机应用技术5g通信,浅谈5g网络通信技术【浅谈多媒体通信技术的应用】
  13. html5 fa图标库,轻松学会在项目中使用fontawesome字体图标
  14. LQ735kii针式打印机安装教程以及设置教程超级详细
  15. Moneybookers的优点
  16. 小米 note3 android,小米NOTE3 MIUI9.6稳定版 开启全面屏手势和屏蔽经典物理按键全攻略...
  17. ssh配置和多平台ssh配置
  18. 1.Linux中超频及cpufreq相关汇总
  19. Linux常用命令-权限管理命令
  20. android手机应用程序开发,Android手机应用程序开发标准

热门文章

  1. Java入门第116课——向List中插入和删除元素
  2. 华为nova10和华为nova9哪个值得买 两者配置对比
  3. 神经网络原理与实例精解,神经网络计算工作原理
  4. Ae 中英文版本切换批处理文件
  5. websocket通信中,send的使用
  6. 非线性规划----经济调度(Python实现)
  7. 问题:当运行exe程序时遇到错误0000007时如何解决
  8. 数据库设计(理论实例)
  9. vector erase操作
  10. Java之原子性-乐观锁与悲观锁