因此,在Python中,您可以執行以下操作:def append(_list): _list.append(1)_list = [0]append(_list)print(_list)顯然,這使我可以將1附加到列表中,但是,如果我在append函數中更改列表的引用,則它不會更改(這是通過對象傳遞引用所期望的)。Java的工作原理類似,但是被認為是通過引用。這是否僅表示Python像C ++一樣,當它傳遞通過值指向對象然后再取消引用的指針(類似于使用C / C ++的->運算符時)?
2 回答

莫回無
TA貢獻1865條經驗 獲得超7個贊
Python中的重要區別不是按值傳遞或-reference傳遞,而是在可變對象和不可變對象之間傳遞。
基本上所有內容都是通過引用傳遞的,但是如果對象不允許您對其進行修改(它是不可變的),則無法更改通過引用傳遞的原始對象。例如,Pythonints
是不可變的,因此即使int通過引用傳遞,您也永遠無法修改原始對象。如果要執行此操作,則必須將對象包裝在可變對象(例如列表)中。列表可以修改(追加,彈出等)
因此,您可以“說” Python的屬性訪問.
與C ++類似,->
但這是Python的一種奇怪的術語。
在您的示例中,您傳遞了一個可變對象(列表)。因此,追加將修改原始對象。因此,您的代碼的輸出為[0, 1]
。(您應該在您的問題中包括該內容。)
添加回答
舉報
0/150
提交
取消