【发布时间】:2016-03-30 18:20:14
【问题描述】:
我刚刚意识到 pythonic 交换并不总是有效。
def swap(x,y):
x,y = y,x
a = 1
b = 2
swap(a,b)
print b
结果:2
为什么在这种情况下交换变量的 Pythonic 方式不起作用?我需要临时变量吗?
【问题讨论】:
-
您到底期望什么?
print b确实会打印2因为b=2 -
大多数 python 对象是不可变的......所以你实际上并没有交换......你只是在函数内部创建了一个局部 x,y 变量,这样
x=y,y=x但它只适用于你在方法范围内 -
@JoranBeasley 这与可变性无关。如果您为此函数传入列表,行为将是相同的。
-
x[:] = x[::-1]@timgeb ...但是我知道你在说什么 -
@hongjooy,你的问题得到解答了吗?