第一句:人生苦短,我用Python
第二句:PHP是世界上最好的语言,我爱Python
好了,回归正题
Python中 万物皆对象,这点很重要
对象有可变与不可变之分,这似乎与参数传递没关系啊,别着急
请看下面的例子:
>>> a="123"
>>> b=[1,2,3]
>>> def f(v1,v2):
... print(id(v1))
... print(id(v2))
... v2[:]=[]
... v1=0
...
>>> id(a)
4330670040
>>> id(b)
4330637384
>>> f(a,b)
4330670040
4330637384
>>> id(a)
4330670040
>>> id(b)
4330637384
>>> a
'123'
>>> b
[]
>>>
上述例子告诉我们,函数参数是按照引用传递的,按照引用传递的,按照引用传递的!!
对于不可变对象,若在函数内部不改变参数值,访问的是外部参数对象,可变对象也是这样,不同点在于,函数内部对不可变参数的修改,不会产生新的对象,而不可变参数的引用参数被修改后则指向新的对象!原来对象不会改变。