python中 swap的问题

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

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

为啥输出的不是2,1?

阅读 4.5k
3 个回答
# 最好的方式是
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)

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

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

a, b = b, a
def swap(c,d):
    global a, b
    a = d
    b = c
a=1
b=2
swap(a,b)
print(a,b)

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题