- 将可变对象(mutable):列表list,字典dict,Numpy数组ndarray和用户自定义类型(类class),作为参数传递给函数, 函数内部将其改变后, 函数外部这个变量也会改变。
- 将不可改变对象(immutable):字符串string,元祖tuple,数值numbers,作为参数传递给函数,函数内部将其改变后,函数外部这个变量不会改变。
1 2 3 4 5
| a = 1 def fun(a): a = 2 fun(a) print a
|
1 2 3 4 5
| a = [] def fun(a): a.append(1) fun(a) print a
|
使用id来看引用a的内存地址辅助理解一下
1 2 3 4 5 6 7 8
| a = 1 def fun(a): print "func_in",id(a) a = 2 print "re-point",id(a), id(2) print "func_out",id(a), id(1) fun(a) print a
|
1 2 3 4 5 6 7
| a = [] def fun(a): print "func_in",id(a) a.append(1) print "func_out",id(a) fun(a) print a
|