我在CodeChef twitter https://twitter.com/codechef/status/941329495046459395中找到了这段代码。它是用C语言编写的。我在Python3中完成了它。这是我的代码:
def vegas(a,b):
temp = a
a = b
b = temp
a = 6
b = 9
print(a,b)
vegas(a,b)
print(a,b)
这就是答案:
6 9
6 9
我的问题是,为什么我的'拉斯维加斯'函数不交换变量' a'和' b'
答案 0 :(得分:2)
它不会像你想要的那样工作。 This question正在全面回答这个问题。简而言之:Python将参数a
和b
转换为两个仅在vegas
中可见的变量。它们以a
和b
的值启动,但与外部a
和b
变量无关。
要使代码正常工作,请执行以下操作:
def vegas(a,b):
temp = a
a = b
b = temp
return a,b
a = 6
b = 9
print(a,b)
a,b = vegas(a,b)
print(a,b)
此外,您可能有兴趣知道可以使用a,b = b,a
答案 1 :(得分:1)
是的,不是...... 函数拉斯维加斯完成工作,但从不返回a和b所以a和b仍然是6和9外。 Arguments are passed by assignment in Python.
您可以看到more here
答案 2 :(得分:1)
这个代码片段是一个笑话,"拉斯维加斯发生的事情仍然存在于拉斯维加斯"因为该函数不会影响变量的值。要影响值,函数需要返回交换的结果。如果没有return语句,函数将不会影响变量,因为函数会创建自己的临时变量以在函数中使用。