Python 函數參數傳遞方式


參數(自變量)在Python里都是按引用傳遞,也就是傳遞的是變量地址,(變量就是地址,沒有類型,而關聯的對象是有類型的)

但是對於不可變變量,在函數內修改會申請新的內存空間,所以對外層函數沒有影響,

對於list變量,相當於操作同一塊內存,則會影響外層函數。

 

    • 可變對象:list dict set
    • 不可變對象:tuple string int float bool

 

  1. #!/usr/bin/python  
  2.    
  3. # 可寫函數說明  
  4. def changeme( mylist ):  
  5.    "修改傳入的列表"  
  6.    mylist.append([1,2,3,4]);  
  7.    print "函數內取值: ", mylist  
  8.    return  
  9.    
  10. # 調用changeme函數  
  11. mylist = [10,20,30];  
  12. changeme( mylist );  
  13. print "函數外取值: ", mylist  

傳入函數的和在末尾添加新內容的對象用的是同一個引用。故輸出結果如下:

 

  1. 函數內取值:  [10, 20, 30, [1, 2, 3, 4]]  
  2. 函數外取值:  [10, 20, 30, [1, 2, 3, 4]]  

 

好,看到這里,自己親手測試一下,代碼: 

  1. def printme(age,str):  
  2.     str = 'str changed!'  
  3.    age=25
  4.     print age,str  
  5.     return  
  6.   
  7. str = 'ori str'  
  8. age = 23  
  9. printme(age,str)  
  10. print age,str  

輸出結果:

  1. 25 str changed!  
  2. 23 ori str  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM