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  

 

posted @ 2016-10-19 14:35  okay4321  阅读(5036)  评论(0编辑  收藏  举报