You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么这段Python代码无法实现两个数值的交换功能?

问题原因

  • Python的参数传递是传对象引用,你代码里用到的整数属于不可变类型,函数内部对参数的重新赋值只会修改函数内部的局部变量,完全不会影响外部的原变量。
  • 你写的swap函数里的形参x、y是函数内部的局部变量,和外面全局定义的x、y只是同名,本质是两个完全独立的变量,你在函数里交换的只是局部变量的指向,全局变量根本没被改动,所以打印出来还是原来的值。

正确实现方案

你可以选下面任意一种方式修改:

方案1:函数返回交换后的值,外部接收

def swap(x, y):
    '''交换两个数值的函数'''
    print("INSIDE")
    return y, x

# 驱动代码
x = 2
y = 3
x, y = swap(x, y)
print(x)
print(y)

方案2:通过可变对象传递(比如列表)

如果要在函数内部修改外部的值,可以把数值放到列表这类可变对象里传入,修改可变对象内部的元素会生效:

def swap(arr):
    '''交换列表前两个元素的函数'''
    print("INSIDE")
    arr[0], arr[1] = arr[1], arr[0]

# 驱动代码
x = 2
y = 3
container = [x, y]
swap(container)
x, y = container
print(x)
print(y)

方案3:原生直接交换(不需要额外封装函数)

Python支持直接交换两个变量的值,不需要临时变量也不需要写函数,一行就可以搞定:

x = 2
y = 3
x, y = y, x
print(x)
print(y)

内容的提问来源于stack exchange,提问作者Darshan Asknani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:09:03