91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-26 00:02:44 來源:腳本之家 閱讀:335 作者:嵐漾憶雨 欄目:開發技術

這個需求比較奇怪,要求實現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)) #<function megaSum at 0x7fb533743a60>
print(megaSum(1)()) #7

計算結果不準確。這個怎么解決,暫時還沒想到,如果有朋友知道可以告訴我。

以上這篇對Python實現累加函數的方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平江县| 高雄市| 丰宁| 德化县| 都安| 邯郸县| 越西县| 漳浦县| 手游| 丹棱县| 如皋市| 稻城县| 井陉县| 北票市| 宜黄县| 九龙坡区| 延安市| 万荣县| 通河县| 乐陵市| 吉水县| 乐业县| 涞水县| 苍南县| 赞皇县| 福贡县| 广安市| 商水县| 杭锦旗| 康定县| 松滋市| 富川| 广丰县| 沙湾县| 洪江市| 沙河市| 临潭县| 孙吴县| 眉山市| 防城港市| 策勒县|