2013-09-21 59 views

回答

2

由於args是一個元組,這是一個參數。下面不一樣的功能和工作原理:

sum((1,2,3,4)) 

如果沒有額外的括號,你在呼喚sum()有四個獨立的參數,所以第一個參數是不是4個整數的元組只是一個整數。這是行不通的,因爲sum()預計第一個參數是一個序列。可選的第二個參數可以用來給出不同的起始值(默認值爲0),這意味着sum()最多需要2個參數。

+0

非常感謝馬丁,我簡直可以感覺到我的大腦不斷擴大的最後幾天,它就像我從未有過的:因爲你在你的函數簽名加星號標誌,內置的總和會像下面的定義在開始學習Python之前進行思考。 –

1

內置sum和您的sumall之間存在細微差異。 sum接收一個可迭代(通常爲listtuple)參數(始終爲一個參數!),並且sumall接收與您傳遞的參數一樣多的參數。

這是爲什麼?

def sum(args): # note: no asterisk here 
    result = 0 
    for val in args: 
    result += val 
    return result 
+0

薩沙,謝謝你,所有的輸入讚賞:)。 –