首頁  >  文章  >  後端開發  >  Python傳遞方式是怎麼樣的?速度本文了解Python參數傳遞

Python傳遞方式是怎麼樣的?速度本文了解Python參數傳遞

Tomorin
Tomorin原創
2018-08-14 14:22:251685瀏覽

這是關於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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn