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中通过getattr获取对象引用的方法Python中对象的引用与复制代码示例基于Python对象引用、可变性和垃圾回收详解跟老齐学Python之深入变量和引用对象python中的对象拷贝示例 python引用传递selenium+python自动化测试之多窗口切换python 去除二维数组/二维列表中的重复行方法selenium+python自动化测试之鼠标和键盘事件selenium+python自动化测试之环境搭建Python对象与引用的介绍

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值