这个交换发生了吗?

2024-09-30 18:33:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我在codecheftwitterhttps://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

我的问题是,为什么我的“vegas”函数不交换变量“a”和“b”的值


Tags: 函数答案代码com密码defstatustwitter
3条回答

是和否。。。 函数vegas做这个工作,但从不返回a和b,所以a和b仍然是6和9。Arguments are passed by assignment in Python.

你可以看到more here

它不会像你想的那样工作。This question正在完整地回答这个问题。简而言之:Python将参数ab转换为两个变量,这两个变量只在vegas中可见。它们是由ab的值启动的,但与外部ab变量没有关系。你知道吗

要使代码正常工作,请执行以下操作:

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交换两个值

这个代码片段是一个笑话,“在维加斯发生的事情留在维加斯”,因为函数不影响变量的值。要影响值,函数需要返回交换的结果。如果没有return语句,函数将不会影响变量,因为函数会创建自己的临时变量在函数中使用。你知道吗

相关问题 更多 >