这个需求比较奇怪,要求实现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实现累加函数的方法详解

本文地址: http://www.cppcns.com/jiaoben/python/250845.html

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

  1. python中累加函数_对Python实现累加函数的方法详解

    对Python实现累加函数的方法详解 发布时间:2020-10-26 00:02:44 来源:脚本之家 阅读:120 作者:岚漾忆雨 这个需求比较奇怪,要求实现Sum和MagaSum函数,实现以下功能 ...

  2. python 读取图片转换为一维向量_对Python中一维向量和一维向量转置相乘的方法详解...

    对Python中一维向量和一维向量转置相乘的方法详解 在Python中有时会碰到需要一个一维列向量(n*1)与另一个一维列向量(n*1)的转置(1*n)相乘,得到一个n*n的矩阵的情况.但是在pyth ...

  3. Python的hasattr() getattr() setattr() 函数使用方法详解

    Python的hasattr() getattr() setattr() 函数使用方法详解 (一) hasattr(object,name) 函数 判断一个对象里面是否有 name 属性或者 name ...

  4. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解

    如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...

  5. pythonprint字节按照16进制输出_对python以16进制打印字节数组的方法详解

    对python以16进制打印字节数组的方法详解 一.问题描述 如果直接用print打印bytes的话,有时候会直接显示ascii对应的字符,看起来很蛋疼. 二.运行效果 上面一行是直接用print打印 ...

  6. c语言memset函数用法,C语言memset函数使用方法详解

    C语言memset函数使用方法详解 一.函数原形   void *  memset(void*s, int ch,size_t n) 二.函数作用  将以s内存地址为首的连续n个字节的内容置成ch,一 ...

  7. scanf函数使用方法详解

    scanf函数使用方法详解 一.scanf函数是什么? 二.scanf函数的作用 三.注意事项 1.输入数据 2.%c 四.字段宽度 五.scanf函数的返回值 一.scanf函数是什么? 1.首先我 ...

  8. c语言memset函数作用,C语言memset函数使用方法详解

    C语言memset函数使用方法详解 一.函数原形   void *  memset(void*s,int ch,size_t n) 二.函数作用  将以s内存地址为首的连续n个字节的内容置成ch,一般 ...

  9. python支持向量机回归_Python中支持向量机SVM的使用方法详解

    除了在Matlab中使用PRTools工具箱中的svm算法,Python中一样可以使用支持向量机做分类.因为Python中的sklearn库也集成了SVM算法,本文的运行环境是Pycharm. 一.导 ...

  10. python布尔类型运算_Python对象类型及其运算方法(详解)

    基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >> ...

最新文章

  1. intellij idea 用不起啊用不起
  2. 应用PlanAhead 进行布局规划
  3. POST 变为AJAX提交代码。
  4. linux read while 变量运算
  5. 北京内推 | 联想研究院机器学习团队招聘因果推理算法研究实习生
  6. C# 调Win32 API SendMessage简单用法及wMsg常量
  7. 数学作图工具_八十中成功举办北京市初中数学教学研讨会
  8. Web开发中的用户角色权限设计总结
  9. Spring的@ExceptionHandler注解使用方法
  10. 学完java后学python_大火的python开发学好后能找到工作吗
  11. android 安全学习从何入手?
  12. Node.js 4.0 中的 ES 6 特性介绍
  13. uboot移植——uboot的硬件驱动部分
  14. 非常非常地重试重试组件,使用杠铃的
  15. 图片转换成代码的小工具Image2Lcd使用说明
  16. Apk脱壳圣战之---脱掉“爱加密”家的壳
  17. IDEA设置成白色背景
  18. 机器学习 梯度到底是什么?
  19. android 浏览器 查看证书,android浏览器弹出该网站的安全证书有问题如何解决
  20. Oracle connect by与level的使用

热门文章

  1. 基于jsonwebtoken(JWT) 的web认证 (Node版实现)
  2. 提升效率Mysql函数(function)|存储过程(procedure)
  3. Linux网络属性配置—修改配置文件
  4. esxi update patch
  5. 268、缺失数字(python)
  6. 数据结构——第九章 查找
  7. ai故障风字体_一分钟就能学会!用PPT做出抖音故障风的字体特效
  8. Java中的char占用几个字节
  9. 学习webpack系列之四 ---- (学习开发环境)
  10. MySQL提取字符串中数字(自定义函数)