先看代码:
1
2
3
4
|
a
=
1
def
fun
(
a
)
:
a
=
2
print
a
#1
|
################
1
2
3
4
|
b
=
[
]
def
fun
(
b
)
:
b
.
append
(
1
)
print
b
#1
|
上面两个分别输出的到底应该是哪一个呢?
这里首先需要弄清楚的就是可变(mutable)对象与不可变对象(immutable),在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象,当一个引用传递给函数的时候,函数自动复制一份引用,所以第一个不可变对象对于a值的引用和外面a= 1没有半毛线关系,而下面的应用则是指向对象本身的引用,那么输出的值自然就是1了,这个知识点你get了吗?
原文 http://group.jobbole.com/10960/?utm_source=blog.jobbole.com&utm_medium=sidebar-group-topic