在 Python 中,函數參數傳遞的方式是通過對象的引用進行傳遞。具體來說,Python 中的函數參數傳遞是按引用傳遞的,但是對于不可變類型和可變類型的處理方式稍有不同。
1. 不可變類型(如數字、字符串、元組)的傳遞方式:函數內部無法修改原始對象的值,而是創建了一個新的對象,并將其分配給函數的局部變量。因此,函數對不可變類型的修改不會影響到原始對象。
2. 可變類型(如列表、字典、集合)的傳遞方式:函數內部可以修改原始對象的值,因為可變類型是可變的,函數在操作時會直接修改原始對象。
下面通過例子來說明:
def modify_value(x, y):
x = x + 1
y.append(4)
a = 5
b = [1, 2, 3]
modify_value(a, b)
print(a) # 輸出:5,不可變類型的值沒有改變
print(b) # 輸出:[1, 2, 3, 4],可變類型的值被修改了
在上面的例子中,函數 `modify_value` 接收兩個參數 `x` 和 `y`,分別代表不可變類型和可變類型的對象。在函數內部,對 `x` 進行加法操作并賦值給新的對象,不會影響到原始的變量 `a` 的值。而對于 `y`,使用 `append` 方法在原始列表的基礎上添加了一個新元素,導致原始的變量 `b` 的值被修改。
總結起來,Python 中的函數參數傳遞是通過對象的引用進行傳遞。對于不可變類型的參數,函數內部的修改不會影響原始對象;而對于可變類型的參數,函數內部的修改會直接影響原始對象。