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

Python函数无return语句却修改外部数组参数的问题咨询

现象原因

这是Python的参数传递规则与可变对象的特性共同导致的正常语言行为:

  • Python的函数参数传递的是对象的内存引用,你把外部的valueArray传入函数时,函数内部的形参valArray和外部的实参valueArray指向内存中完全相同的数组对象,不会自动生成独立的副本。
  • 你所用的多维数组(从索引写法判断为NumPy数组)属于可变对象,支持直接修改对象内部的元素值。你在函数中执行valArray[x,y] = optionValue操作时,就是直接修改了公共数组对象的内部存储值,因此函数外部的valueArray会同步发生变化,不需要return语句也不需要声明全局变量。
避免修改原数组的方案

如果你的需求是不改动原始数组,只在新的副本上做修改,可以选择以下两种方案:

方案1:调用函数时传入数组副本

updateValueArray(valueArray.copy(), posabilityArray)

方案2:函数内部先拷贝再修改,最后返回新数组

def updateValueArray(valArray, posArray):
    # 生成与原数组完全独立的拷贝
    processed_val = valArray.copy()
    for x in range(9):
        for y in range(9):
            options = 0
            optionValue = 0
            for i in range(9):
                if posArray[x,y,i]:
                    options+=1
                    optionValue = i+1
            if options == 1:
                processed_val[x,y] = optionValue
    # 返回修改后的新数组
    return processed_val

# 调用时用新变量接收返回结果
new_value_arr = updateValueArray(valueArray, posabilityArray)

内容的提问来源于stack exchange,提问作者Jonatan Kaare - Rasmussen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:27:04