」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Python 什麼時候使用引用呼叫和物件引用呼叫?

Python 什麼時候使用引用呼叫和物件引用呼叫?

發佈於2024-11-08
瀏覽:275

When Does Python Use Call by Reference and Call by Object Reference?

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 中。由於列表是透過物件參考傳遞的,因此函數內對列表所做的任何更改都將反映在呼叫函數中。

依引用傳遞與依物件引用傳遞

  • 依參考傳遞:原始變數的方塊傳遞給被呼叫的函數,允許對變數內容的任何變更反映在呼叫中function.
  • 透過物件參考傳遞: 對原始物件框的引用傳遞給被呼叫的函數。物件的變更會反映在呼叫函數和被呼叫函數中,但變數本身(盒子)的變更則不會。

總之,Python 遵循透過物件參考傳遞,其中變數引用物件而不是物件本身。這允許函數修改傳遞給它們的對象,但對變數引用本身的更改不會傳播回呼叫函數。

版本聲明 本文轉載於:1729140861如有侵犯,請洽[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3