[問題] 函式中傳引數的問題

看板Python作者 (25..)時間17年前 (2008/02/23 03:14), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
以下有兩個例子,第一個我覺的沒有問題,不過第二個我就不懂了,有問 題的地方在於我覺的主程式中大寫的X 與函式中小寫的x應該都是指向同一個 記憶體位址,而且加上它本身物件型態為「數值」(屬於不可變更的物件), 所以輸出的結果,第一個程式看來合理,不過為何第二個程式輸出的結果, 不是 1 [3, 4],反而是 2 [3, 4],請大家指教,謝謝 ^^ 第一個: def changer(x, y): x = 2 y[0] = 'spam' X = 1 L = [1, 2] changer(X, L) print X, L 輸出結果: 1 ['spam', 2] 第二個: def multiple (x, y): x = 2 y = [3, 4] return (x, y) X = 1 L = [1, 2] (X, L) = multiple (X, L) print X, L 輸出結果:2 [3, 4] -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.217.108.206

02/23 12:47, , 1F
在做x=2時 x會得到新的位址來存2 並在回傳時改掉X的位址
02/23 12:47, 1F

02/24 11:04, , 2F
我大概懂了,關鍵在第二支程式有return, 所以把原來的X
02/24 11:04, 2F

02/24 11:05, , 3F
儲存的地址取代帶了,是這樣吧
02/24 11:05, 3F

02/24 11:13, , 4F
謝謝拉
02/24 11:13, 4F
文章代碼(AID): #17lu-3UA (Python)
文章代碼(AID): #17lu-3UA (Python)