Re: [問題] 程式新手問題VARARG

作者: legnaleurc (CA)   2014-03-11 16:44:19
※ 引述《cecilx (@@)》之銘言:
: 剛開始接觸程式設計 現在用bytes of python練習
: VarArgs parameters這一章的東西我不太理解怎麼運作的
: 以下是書上的範例
: def total(initial=5, *numbers, **keywords):
: count = initial
: for number in numbers:
: count += number
: for key in keywords:
: count += keywords[key]
: return count
: print(total(10, 1, 2, 3, vegetables=50, fruits=100))
: ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
: 問題一:10, 1, 2, 3是被歸類到*numbers嗎?
: 而vegetables=50, fruits=100是被歸類到**keywords
建議你寫個函式:
def test(initial=5, *numbers, **keywords):
print(initial, numbers, keywords)
代各種參數進去看看會比較好體會, 例如
test()
test(10)
test(10, 1, 2, 3)
test(10, 1, 2, 3, vegetables=50, fruits=100)
: 問題二:count = initial接下來的計算不是應該會變成5+後面的數值 但打印出來結果
: 卻是166 一開始把initial=5這行的作用是什麼呢?
同上, 你必須理解何為"預設參數", 問題一解開後問題二也不存在了
: 問題三:for number in numbers:
: number是否因為加了*號所以被歸類到*numberS裡面
numbers 是一個 list, 和開頭的 * 號無關
可以先跳去看關於迴圈的章節
: 我後來把def total(initial=5, *numbers, **keywords):
: 裡面的numbers改成number結果也是一樣的 那為什麼要寫成number in numbers
: 但如果把for number in numbers
: count += number
: 改成 for numbers in numbers
: count += numbers
不要這麼做 ... 你會搞混誰是 list 誰是 item
: 結果也是一樣的 那為什麼作者會用number做變數名稱呢
: 感覺使用numbers會比較好理解
覺得這邊的問題是你還沒完全理解 Python 的 for-loop
建議先去看相關章節
: 超新手問題可能問的沒有很清楚 整個腦筋很打結啊..
作者: cecilx (@@)   2014-03-12 11:55:00
謝謝你 我用total()試 知道initial是不給數值的預設值了

Links booklink

Contact Us: admin [ a t ] ucptt.com