1 Python的函数参数传递
看两个例子:
Python
1 2 3 4 5 |
a = 1 def fun(a): a = 2 fun(a) print a # 1 |
Python
1 2 3 4 5 |
a = [] def fun(a): a.append(1) fun(a) print a # [1] |
所有的变量都可以理解是内存中一个对象的“引用”,或者,也可以看似c中void*的感觉。
这里记住的是类型是属于对象的,而不是变量。而对象有两种,“可更改”(mutable)与“不可更改”(immutable)对象。在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象。(这就是这个问题的重点)
当一个引用传递给函数的时候,函数自动复制一份引用,这个函数里的引用和