python 參數傳值傳引用的問題

來源:互聯網
上載者:User
 關於python的傳值。今天使用中遇到一個問題,抽象為測試i代碼如下
   1: #!/usr/bin/python2.6                                                                                                                  

   2:  

   3: def FuncTest1(str_list):

   4:   path = '/home/test/file'

   5:   str_list = path.split('/')

   6:  

   7: def FuncTest2(str_list):

   8:   path = '/home/test/file'

   9:   str_list.extend(path.split('/'))

  10:  

  11:  

  12: str_list = []

  13: FuncTest1(str_list)

  14: print 'FuncTest1: %s' % str_list

  15: str_list = []

  16: FuncTest2(str_list)

  17: print 'FuncTest2:%s' % str_list

 

即測試參數是傳值還是傳引用的

測試的結果為:

 

對此分析,python的參數傳遞還是傳值的。只是對於簡單類型,傳遞的是指,對於複雜類型或對象,傳遞的為對象的引用(或指標)。

因此對於上面的情形,

FuncTest1中將傳入的str_list從新指向一個結果。可以認為在函數中,修改了臨時對象的指向。函數外部不變。

而FuncTest2中將對str_list執行了一個方法調用,其修改對傳入是有效。

這點和Java類似。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.