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

看板Python作者 (CA)時間11年前 (2014/03/11 16:44), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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 建議先去看相關章節 : 超新手問題可能問的沒有很清楚 整個腦筋很打結啊.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.163.141.20

03/12 11:55, , 1F
謝謝你 我用total()試 知道initial是不給數值的預設值了
03/12 11:55, 1F
文章代碼(AID): #1J7ipdNp (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1J7ipdNp (Python)