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

全國(guó)咨詢/投訴熱線:400-618-4000

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

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

好口碑IT培訓(xùn)

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

  下面是一個(gè)例子來(lái)說(shuō)明這個(gè)問(wèn)題:

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

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

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

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

0 分享到:
和我們?cè)诰€交談!