在編寫測試類別時,您注意到 Python 中的參數似乎是按值而不是按引用傳遞。本文將闡明您的假設是否正確,並指導您在 Python 中實現按引用傳遞。
在 Python 中,參數是按引用傳遞的,這意味著物件的引用被傳遞給函數。但是,該引用是按值傳遞的。這種行為是由於可變資料類型和不可變資料類型之間的差異而產生的。
考慮以下範例:
def try_to_change_list_contents(the_list): the_list.append('four') outer_list = ['one', 'two', 'three'] try_to_change_list_contents(outer_list) print(outer_list)
由於清單是可變的,因此the_list 參數是對outer_list 物件的參考。透過將 'four' 附加到 the_list,outer_list 也會被修改。
相反,考慮這個帶有字串的範例:
def try_to_change_string(my_string): my_string = 'Changed' outer_string = 'Original' try_to_change_string(outer_string) print(outer_string)
儘管發生了變化函數內的my_string 變量,outer_string 保持不變。發生這種情況是因為字串是不可變的,無法就地修改。
為了模擬修改原始變數的引用傳遞,有幾個選項:
1。傳回新值:函數可以傳回一個新值,可以將其賦值給函數外部的原始變數。
2.修改對象的屬性:如果變數是對象,則函數可以修改其屬性之一,該屬性將反映在原始物件中。
3.使用清單或包裝器: 您可以將變數包裝在清單中並將該清單傳遞給函數。修改列表會影響原始變數。
透過理解傳值和引用機制,可以有效地根據需要修改Python中的變數。
以上是Python 是按值傳遞還是按引用傳遞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!