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

Python如何将字符串按引用传递给函数以修改外部变量值

Python函数调用后修改外部字符串变量的实现方案

问题根因

Python 中字符串属于不可变类型,函数参数传递的是对象引用。你在函数内部对arg3执行赋值操作时,只是修改了函数局部作用域内变量的指向,不会改动外部全局作用域的arg3变量,因此调用后外部arg3还是空字符串。另外注意你当前的代码存在语法问题:函数定义行末尾缺少冒号:,直接运行会报错。


可选实现方案

方案1:函数返回修改后的值,外部接收(最推荐)

这是Python的惯用写法,无副作用,可维护性最高:

def foo(arg1, arg2, arg3):
    arg3 = "new_value"
    # 同时返回运算结果和修改后的arg3
    return arg1 + arg2, arg3

arg3 = ""
# 外部接收返回值更新arg3
calculate_res, arg3 = foo(1, 2, arg3)

执行完成后arg3的值就会变为new_value。

方案2:用可变容器包裹目标变量

如果需要同时修改多个参数不想返回过多值,可以把字符串放到列表这类可变容器中,函数内部直接修改容器内元素即可:

def foo(arg1, arg2, arg3_container):
    # 直接修改可变容器内的元素
    arg3_container[0] = "new_value"
    return arg1 + arg2

# 把字符串放到列表里
arg3 = [""]
foo(1, 2, arg3)
# 取修改后的值
print(arg3[0]) # 输出:new_value

方案3:用global关键字修改全局变量(不推荐)

如果arg3是全局变量,可以在函数内用global声明后直接修改,但这种写法会引入隐式副作用,不利于调试和维护,非必要不建议使用:

def foo(arg1, arg2):
    # 声明要修改全局变量arg3
    global arg3
    arg3 = "new_value"
    return arg1 + arg2

arg3 = ""
foo(1, 2)

执行后全局arg3会被更新为new_value。


内容的提问来源于stack exchange,提问作者Nikky Leed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:06:10