教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Python是按引用調(diào)用還是按值調(diào)用?

更新時間:2023年03月27日14時19分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

  在Python中,參數(shù)傳遞是按引用調(diào)用(也稱為按對象傳遞),而不是按值調(diào)用。這意味著函數(shù)接收的是傳遞對象的引用,而不是對象的值本身。在函數(shù)內(nèi)部對傳遞的對象進(jìn)行的任何更改都將在調(diào)用者中反映出來。

  下面是一個例子來說明這個問題:

def change_list(lst):
    lst.append(4)
    
my_list = [1, 2, 3]
change_list(my_list)
print(my_list)  # 輸出 [1, 2, 3, 4]

  在這個例子中,我們定義了一個函數(shù)change_list,它接收一個列表參數(shù)lst并將值4添加到該列表中。然后我們創(chuàng)建一個名為my_list的列表,調(diào)用change_list函數(shù)并將my_list作為參數(shù)傳遞。最后,我們在主程序中打印my_list的值,發(fā)現(xiàn)它已經(jīng)被修改了,添加了值4。

  這是因?yàn)樵赑ython中,my_list的值實(shí)際上是一個指向列表對象的引用,當(dāng)它被傳遞給change_list函數(shù)時,實(shí)際上傳遞的是該引用。在函數(shù)內(nèi)部,我們可以通過這個引用來訪問和修改列表對象,而這些修改會反映在調(diào)用者中。

  需要注意的是,雖然Python中的參數(shù)傳遞是按引用調(diào)用,但是對于不可變類型的參數(shù)(例如數(shù)字、字符串和元組),修改操作會創(chuàng)建一個新的對象,而不是在原始對象上進(jìn)行修改。因此,即使傳遞的是不可變類型的參數(shù),也不能說Python中是按值調(diào)用。

0 分享到:
和我們在線交談!