Python是一種面向對象的編程語言,傳遞參數時有按值傳遞和按引用傳遞兩種方式。按值傳遞是將參數的值復制一份給函數進行操作,函數內對參數的操作不會影響到原始的值。而按引用傳遞則是將參數的地址傳遞給函數,函數內對參數的操作會影響原始的值。
在Python中,一般情況下,函數參數都是按引用傳遞的。這意味著,改變函數內部參數的值,會改變函數外部參數的值。例如:
def change_list(my_list): my_list.append(1) my_list = [0, 2, 3] change_list(my_list) print(my_list) # [0, 2, 3, 1]
當我們調用change_list函數時,傳遞給函數的參數是my_list的地址。在函數內部,對my_list的操作實際上是對原始的my_list進行操作。因此,原始的my_list被修改了。
但是,也有一些特殊情況下,函數參數會按值傳遞。例如:
def change_int(my_int): my_int = my_int + 1 my_int = 1 change_int(my_int) print(my_int) # 1
當我們調用change_int函數時,傳遞給函數的參數是my_int的值。在函數內部,對my_int的操作實際上是對被復制的值進行操作。因此,原始的my_int并沒有被修改。
最后需要注意的是,在Python中,列表等一些可變類型的對象在傳遞參數時,會傳遞其地址,而不是值。而整數、字符串等不可變類型的對象在傳遞參數時,會傳遞其值,而不是地址。