全部博文(164)
分类: Python/Ruby
2012-02-24 16:44:47
对于不可变对象(如数字 字符或者元组)。 函数是以 传值 的方式;
比如:
def mul( y ):
y *= 3
a = 5
print a
mul( a )
print a
执行结果为
5
5
可见, 调用mul函数, mul 函数并没有改变 a 的值;
对于可变对象(比如字典或列表),函数以传引用的方式;
L=[1, 2, 3]
def f(l):
l.append(4)
print l
f(L)
print L
结果:
>>> [1, 2, 3, 4]
[1, 2, 3, 4]
实际上可以在调用函数时; 象函数传递一个 参数的副本; 切片就有很好的表现形式;
L=[1, 2, 3]
def f(l):
l.append(4)
print l
f(L[:])
print L
结果:
>>> [1, 2, 3, 4]
[1, 2, 3]