国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

對Python實現累加函數的方法詳解

2020-02-16 00:51:03
字體:
來源:轉載
供稿:網友

這個需求比較奇怪,要求實現Sum和MagaSum函數,實現以下功能

Sum(1) =>1Sum(1,2,3) =>6MegaSum(1)() =>1MegaSum(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 sdef megaSum(s=None,l=[]):  if not s:    ret = Sum(*l)    l.clear() # 清空,否則之后計算的結果值會不對。    return ret  else:    l.append(s)    return megaSumprint(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實現累加函數的方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西藏| 乌兰浩特市| 彭山县| 陇川县| 乌拉特中旗| 陕西省| 眉山市| 东台市| 儋州市| 湟中县| 洞口县| 汪清县| 迁安市| 贵阳市| 桃园市| 城固县| 行唐县| 青阳县| 奉贤区| 合作市| 光山县| 冀州市| 宜兴市| 贵溪市| 府谷县| 凤翔县| 阿坝| 蓝田县| 桐梓县| 三台县| 漠河县| 香河县| 旬邑县| 赫章县| 涟水县| 德安县| 会泽县| 县级市| 镇雄县| 德江县| 龙州县|