日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python传参是传值还是传引用

發布時間:2025/3/20 python 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python传参是传值还是传引用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在此之前先來看看變量和對象的關系:Python 中一切皆為對象,數字是對象,列表是對象,函數也是對象,任何東西都是對象。而變量是對象的一個引用(又稱為名字或者標簽),對象的操作都是通過引用來完成的。例如,a = []是一個空列表對象,變量 a 是該對象的一個引用
例1

def test(c):c.append("hello world")print(c,id(c))return list = [1,2] test(list) print(list,id(list))

輸出

[1, 2, 'hello world'] 2463790879240 [1, 2, 'hello world'] 2463790879240

在執行test函數前,列表list和參數c都指向同一個對象,執行test時并沒有重新賦值,也沒有新的指向過程,append方法只是對列表對象插入一個元素,對象還是原來的對象,只是對象里面的內容變了,因為參數c和列表list都是綁定同一個對象上,執行c.append和list.append方法本質都是對一個對象進行操作,因此list列表在調用函數后發生了變化,但id沒變,還是原來那個對象。因此,如果函數收到的是一個可變對象(比如字典或者列表)的引用,就能修改對象的原始值--相當于通過“傳引用”來傳遞對象

例2

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def test2(p): p = "i in test2" print(p,id(p)) str = "hello word" test2(str) print(str,id(str))

輸出:

i in test2 2885210784112 hello word 2885210784048

id不一樣,所以說不是同一個對象,也就是說我們傳的還是引用。因此,如果函數收到的是一個不可變對象(比如數字、字符或者元組)的引用,就不能直接修改原始對象--相當于通過“傳值’來傳遞對象。

總結:

Python參數傳遞采用的肯定是“傳對象引用”的方式。這種方式相當于傳值和傳引用的一種綜合。如果函數收到的是一個可變對象(比如字典或者列表)的引用,就能修改對象的原始值--相當于通過“傳引用”來傳遞對象。如果函數收到的是一個不可變對象(比如數字、字符或者元組)的引用,就不能直接修改原始對象--相當于通過“傳值’來傳遞對象。

總結

以上是生活随笔為你收集整理的python传参是传值还是传引用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。