python引數傳遞方式
阿新 • • 發佈:2019-02-20
python引數傳遞是以傳引用的方式!
如果函式接收到的引數是一個可變物件(類型別,列表,字典),就會改變物件的原始值。
如果函式接收到的引數是一個不可變物件,即基本資料型別(數值型,字串,布林),就不會改變物件的原始值。
無論什麼引數,都是傳引用,只不過基本資料型別的賦值其實是重新構造並指向了一個新的物件,記憶體地址不一樣,可以用id()來查詢記憶體地址~
對於可變物件(類型別,列表,字典)來說,如果直接x=y
的話,x和y的記憶體地址相同;如果只是想簡單賦值,就得用 x=y[:]
。(如eg1所示)
對於不可變物件(數值型,字串,布林)來說,直接等就可以了,兩種賦值方式並無區別,且 x=y[:]
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)