python中 swap的问题

蒙面加菲猫666
  • 13

为啥我输出的变量没互换?

def swap(a,b):
    temp=a
    a=b
    b=temp 
a=1
b=2
swap(a,b)
print(a,b)

为啥输出的不是2,1?

回复
阅读 2.8k
3 个回答
剑心无痕
  • 3.4k
✓ 已被采纳
# 最好的方式是
a, b = 1, 2
a, b = b, a
print(a, b)
# 非要上面那样写,需要返回值
def swap(a,b):
    temp=a
    a=b
    b=temp 
    return a, b
   
a, b = swap(a, b)
zuch
  • 4.4k

因为是值传递,或者说,在函数里面的 a b 和外面的 a b 不是同一个变量。

python 交换 2 个基本类型的变量可以这样写:

a, b = b, a
听完这一年
  • 439
def swap(c,d):
    global a, b
    a = d
    b = c
a=1
b=2
swap(a,b)
print(a,b)

这个代码就是你想要的了。
前面那些回答的,人家就是想要从函数里面换值,你们非要重新赋值给变量,那还不如不要用函数。

宣传栏