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

初學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指向了新的地址

如果引數是不可變物件如數字、字元或者元組,則為值傳遞,則不會改變原值。