[問題] 程式新手問題VARARG

看板Python作者 (@@)時間11年前 (2014/03/11 15:22), 編輯推噓0(009)
留言9則, 2人參與, 最新討論串1/2 (看更多)
剛開始接觸程式設計 現在用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 問題二:count = initial接下來的計算不是應該會變成5+後面的數值 但打印出來結果 卻是166 一開始把initial=5這行的作用是什麼呢? 問題三:for number in numbers: number是否因為加了*號所以被歸類到*numberS裡面 我後來把def total(initial=5, *numbers, **keywords): 裡面的numbers改成number結果也是一樣的 那為什麼要寫成number in numbers 但如果把for number in numbers count += number 改成 for numbers in numbers count += numbers 結果也是一樣的 那為什麼作者會用number做變數名稱呢 感覺使用numbers會比較好理解 超新手問題可能問的沒有很清楚 整個腦筋很打結啊.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.218.90

03/11 18:19, , 1F
你會有這些問題表示你學習的過程完全忽略定義
03/11 18:19, 1F

03/11 18:21, , 2F
從問題三看最明顯 你完全不知道 for .. in .. 在幹嘛
03/11 18:21, 2F

03/11 18:22, , 3F
意思是numbers迭次賦值給給number
03/11 18:22, 3F

03/11 18:23, , 4F
numbers=[1,2,3] 表示迴圈會跑三次
03/11 18:23, 4F

03/11 18:24, , 5F
第一次number=1,第二次number=2,第三次number=3
03/11 18:24, 5F

03/11 18:28, , 6F
我看你還是別管number還numbers了
03/11 18:28, 6F

03/11 18:29, , 7F
把number改成a, numbers改成b去想好了
03/11 18:29, 7F

03/11 18:29, , 8F
不然你大概要為了到底要不要加s又想到腦袋打結
03/11 18:29, 8F

03/12 11:53, , 9F
謝謝大大 我多看了tutorial的for範例有比較清楚了
03/12 11:53, 9F
文章代碼(AID): #1J7hdAZ2 (Python)
討論串 (同標題文章)
文章代碼(AID): #1J7hdAZ2 (Python)