初學python--引數傳遞方式
因為要面試EMC的實習,之前完全沒有接觸過Python,只有兩天時間準備,遇到所有程式語言都會有的問題,引數傳遞問題。
經過自己試驗以及在網上查閱資料總結如下:
Python既是值傳遞也是引用傳遞。在類似a=b的賦值過程中,傳遞的是引用,也就是a與b指向同一個地址,如果a改變那麼b的值也相對改變。
函式引數傳遞:如果引數是可變物件如列表、字典,則為引用傳遞,也就是說會改變原有值。
例如:函式change(a):
a[1]='a'
x=[1,'']
change(x)
結果為x=[1,'a']
可見直接改變列表的內容
但是有個容易產生誤解的地方 如果函式是change(a):
a=[10]
x=[1]
change(x)
結果為x=[1]
可見沒有改變列表內容,這是什麼原因呢,上面的函式等價於x=[1], a=x,a=[10],這裡很明顯x的值不會變的,因為a指向了新的地址
如果引數是不可變物件如數字、字元或者元組,則為值傳遞,則不會改變原值。