作者nomoyang (25..)
看板Python
标题[问题] 函式中传引数的问题
时间Sat Feb 23 11:14:10 2008
以下有两个例子,第一个我觉的没有问题,不过第二个我就不懂了,有问
题的地方在於我觉的主程式中大写的X 与函式中小写的x应该都是指向同一个
记忆体位址,而且加上它本身物件型态为「数值」(属於不可变更的物件),
所以输出的结果,第一个程式看来合理,不过为何第二个程式输出的结果,
不是 1 [3, 4],反而是 2 [3, 4],请大家指教,谢谢 ^^
第一个:
def changer(x, y):
x = 2
y[0] = 'spam'
X = 1
L = [1, 2]
changer(X, L)
print X, L
输出结果: 1 ['spam', 2]
第二个:
def multiple (x, y):
x = 2
y = [3, 4]
return (x, y)
X = 1
L = [1, 2]
(X, L) = multiple (X, L)
print X, L
输出结果:2 [3, 4]
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.217.108.206
1F:推 cccx:在做x=2时 x会得到新的位址来存2 并在回传时改掉X的位址 02/23 12:47
2F:→ nomoyang:我大概懂了,关键在第二支程式有return, 所以把原来的X 02/24 11:04
3F:→ nomoyang:储存的地址取代带了,是这样吧 02/24 11:05
4F:→ nomoyang:谢谢拉 02/24 11:13