這是關於Python參數傳遞方式的文章,主要介紹了Python參數可變參數定義及其Python參數傳遞方式,分享給大家供大家參考。具體分析如下:
所謂Python參數
在python參數中,類型屬於對象,變數是沒有類型的:
a=[1,2,3] a="PHPCN"
以上程式碼中,[1,2,3] 是List 類型,"PHPCN" 是String 類型,而變數a 是沒有類型,她只是一個物件的引用(一個指標),可以是List 類型對象,也可以指向String 類型對象。
⊙可更改(mutable)與不可更改(immutable)物件
在python 中,strings, tuples, 和numbers 是不可更改的對象,而list,dict 等則是可以修改的對象。
·不可變型別:變數賦值 a=5 後再賦值 a=10,這裡實際是新產生一個int 值物件10,再讓a 指向它,而5 被丟棄,不是改變a的值,相當於新生成了a。
·可變類型:變數賦值 la=[1,2,3,4] 後再賦值 la[2]=5 則是將list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。
python 參數傳遞方式:
#·不可變型別:類似c 的值傳遞,如整數、字符串、元組。如fun(a),傳遞的只是a的值,沒有影響a物件本身。例如在 fun(a)內部修改 a 的值,只是修改另一個複製的對象,不會影響 a 本身。
·可變類型:類似 c 的引用傳遞,如 列表,字典。如fun(la),則是將la 真正的傳過去,修改後fun外部的la也會受影響
python 中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變對象和傳輸可變對象。
⊙python 傳不可變物件實例
#!/usr/bin/python # -*- coding: UTF-8 -*- def ChangeInt( a ): a = 10 b = 2ChangeInt(b) print b # 结果是 2
實例中有int 物件2,指向它的變數是b,在傳遞給ChangeInt函數時,以傳值的方式複製了變數b,a 和b 都指向了同一個Int 對象,在a=10 時,則新產生一個int 值物件10,並讓a 指向它。
⊙傳可變物件實例
#!/usr/bin/python # -*- coding: UTF-8 -*- # 可写函数说明def changeme( mylist ): "修改传入的列表" mylist.append([1,2,3,4]); print "函数内取值: ", mylist return # 调用changeme函数 mylist = [10,20,30]; changeme( mylist ); print "函数外取值: ", mylist
實例中傳入函數的和在末尾添加新內容的物件使用的是同一個引用,故輸出結果如下:
函数内取值: [10, 20, 30, [1, 2, 3, 4]] 函数外取值: [10, 20, 30, [1, 2, 3, 4]]
課後延展:
一文通讀Python自訂函數與Python函數傳回值,附有詳細範例
以上是Python傳遞方式是怎麼樣的?速度本文了解Python參數傳遞的詳細內容。更多資訊請關注PHP中文網其他相關文章!