3 回答

TA貢獻1829條經驗 獲得超6個贊
Python 按值傳遞對象的引用。
Python按值傳遞對象的引用(如Java),Python中的所有內容都是對象。這聽起來很簡單,但是你會注意到一些數據類型似乎表現出按值傳遞的特征,而其他數據似乎就像傳遞引用一樣...這是什么交易?
理解可變和不可變對象很重要。某些對象(如字符串,元組和數字)是不可變的。在函數/方法中更改它們將創建一個新實例,并且不會更改函數/方法之外的原始實例。其他對象(如列表和詞典)是可變的,這意味著您可以就地更改對象。因此,更改函數/方法內的對象也會更改外部的原始對象。

TA貢獻1831條經驗 獲得超4個贊
事實是,整個參考/值概念將不適合python。Python沒有變量的“價值”。Python只有引用對象的對象和名稱。
因此,當您調用函數并在括號內放置“名稱”時,如下所示:
def func(x): # defines a function that takes an argument
... # do something here
func(myname) # calling the function
myname傳遞指向的實際對象,而不是名稱 myname 本身。在函數內部,給出了另一個name(x)來引用傳遞的同一個對象。
您可以修改函數內部的對象(如果它是可變的),但您無法更改外部名稱指向的對象。就像你做的那樣
anothername = myname
因此,我可以回答你的問題:
它是“按值傳遞”,但所有值都只是對象的引用。
添加回答
舉報