1. 程式人生 > >python引數傳遞方式

python引數傳遞方式

python引數傳遞是以傳引用的方式!

如果函式接收到的引數是一個可變物件(類型別,列表,字典),就會改變物件的原始值。
如果函式接收到的引數是一個不可變物件,即基本資料型別(數值型,字串,布林),就不會改變物件的原始值。

無論什麼引數,都是傳引用,只不過基本資料型別的賦值其實是重新構造並指向了一個新的物件,記憶體地址不一樣,可以用id()來查詢記憶體地址~

對於可變物件(類型別,列表,字典)來說,如果直接x=y的話,x和y的記憶體地址相同;如果只是想簡單賦值,就得用 x=y[:]。(如eg1所示)
對於不可變物件(數值型,字串,布林)來說,直接等就可以了,兩種賦值方式並無區別,且 x=y[:]

這種方式並不是所有資料型別都適用,比如int就會報錯(如eg2所示)

eg1:

x= [1,3]
print id(x)
y = x[:]
print 'y:(y = x[:])'
print y
print id(y)
yy = x
print 'yy:(yy = x)'
print yy
print id(yy)
print "*************************************"
x2 = 'c'
print id(x2)
y2 = x2[:]
print 'y2:(y2 = x2[:])'
print y2
print id(y2)
yy2 = x2
print
'yy2:(yy2 = x2)' print yy2 print id(yy2)

這裡寫圖片描述

eg2:

x= 66
print id(x)
y = x
print 'y:(y = x)'
print y
print id(y)
yy = x[:]
print 'yy:(yy = x[:])'
print yy
print id(yy)

這裡寫圖片描述