python 累加_对Python实现累加函数的方法详解
这个需求比较奇怪,要求实现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实现累加函数的方法详解相关推荐
- python中累加函数_对Python实现累加函数的方法详解
对Python实现累加函数的方法详解 发布时间:2020-10-26 00:02:44 来源:脚本之家 阅读:120 作者:岚漾忆雨 这个需求比较奇怪,要求实现Sum和MagaSum函数,实现以下功能 ...
- python 读取图片转换为一维向量_对Python中一维向量和一维向量转置相乘的方法详解...
对Python中一维向量和一维向量转置相乘的方法详解 在Python中有时会碰到需要一个一维列向量(n*1)与另一个一维列向量(n*1)的转置(1*n)相乘,得到一个n*n的矩阵的情况.但是在pyth ...
- Python的hasattr() getattr() setattr() 函数使用方法详解
Python的hasattr() getattr() setattr() 函数使用方法详解 (一) hasattr(object,name) 函数 判断一个对象里面是否有 name 属性或者 name ...
- python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解
如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...
- pythonprint字节按照16进制输出_对python以16进制打印字节数组的方法详解
对python以16进制打印字节数组的方法详解 一.问题描述 如果直接用print打印bytes的话,有时候会直接显示ascii对应的字符,看起来很蛋疼. 二.运行效果 上面一行是直接用print打印 ...
- c语言memset函数用法,C语言memset函数使用方法详解
C语言memset函数使用方法详解 一.函数原形 void * memset(void*s, int ch,size_t n) 二.函数作用 将以s内存地址为首的连续n个字节的内容置成ch,一 ...
- scanf函数使用方法详解
scanf函数使用方法详解 一.scanf函数是什么? 二.scanf函数的作用 三.注意事项 1.输入数据 2.%c 四.字段宽度 五.scanf函数的返回值 一.scanf函数是什么? 1.首先我 ...
- c语言memset函数作用,C语言memset函数使用方法详解
C语言memset函数使用方法详解 一.函数原形 void * memset(void*s,int ch,size_t n) 二.函数作用 将以s内存地址为首的连续n个字节的内容置成ch,一般 ...
- python支持向量机回归_Python中支持向量机SVM的使用方法详解
除了在Matlab中使用PRTools工具箱中的svm算法,Python中一样可以使用支持向量机做分类.因为Python中的sklearn库也集成了SVM算法,本文的运行环境是Pycharm. 一.导 ...
- python布尔类型运算_Python对象类型及其运算方法(详解)
基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >> ...
最新文章
- intellij idea 用不起啊用不起
- 应用PlanAhead 进行布局规划
- POST 变为AJAX提交代码。
- linux read while 变量运算
- 北京内推 | 联想研究院机器学习团队招聘因果推理算法研究实习生
- C# 调Win32 API SendMessage简单用法及wMsg常量
- 数学作图工具_八十中成功举办北京市初中数学教学研讨会
- Web开发中的用户角色权限设计总结
- Spring的@ExceptionHandler注解使用方法
- 学完java后学python_大火的python开发学好后能找到工作吗
- android 安全学习从何入手?
- Node.js 4.0 中的 ES 6 特性介绍
- uboot移植——uboot的硬件驱动部分
- 非常非常地重试重试组件,使用杠铃的
- 图片转换成代码的小工具Image2Lcd使用说明
- Apk脱壳圣战之---脱掉“爱加密”家的壳
- IDEA设置成白色背景
- 机器学习 梯度到底是什么?
- android 浏览器 查看证书,android浏览器弹出该网站的安全证书有问题如何解决
- Oracle connect by与level的使用