Python 函數依引用呼叫(重複)
在許多程式語言中,參數可以按值傳遞,也可以使用特定保留字按引用傳遞。然而,在Python中,當參數傳遞給函數時,它永遠不會修改呼叫函數中原始變數的值。
範例1:按值呼叫
k = 2
def foo(n):
n *= n
return n
j = foo(k)
print(j) # 4
print(k) # 2
此處,呼叫 foo 函數後 k 的值保持不變,因為 Python 按值傳遞參數。
範例 2:透過 Global 呼叫
要修改呼叫函數中的變量,可以使用global關鍵字。
n = 0
def foo():
global n
n *= n
return n
在這種情況下,全域關鍵字允許在 foo 函數內修改 n,並且其值將在呼叫函數中更新。
透過 Object Reference 中的傳遞然而,Python
Python 並非嚴格遵循按值呼叫或按引用呼叫。相反,它採用了一個稱為“按物件引用傳遞”的概念。
在 Python 中,變數引用對象,而非對象本身。因此,當變數傳遞給函數時,它傳遞的是物件的引用,而不是物件本身。
例如:
def append_one(li):
li.append(1)
x = [0]
append_one(x)
print(x) # [0, 1]
在此程式碼中,append_one 函數將 1 追加到列表 x 中。由於列表是透過物件參考傳遞的,因此函數內對列表所做的任何更改都將反映在呼叫函數中。
依引用傳遞與依物件引用傳遞
總之,Python 遵循透過物件參考傳遞,其中變數引用物件而不是物件本身。這允許函數修改傳遞給它們的對象,但對變數引用本身的更改不會傳播回呼叫函數。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3