python函数内部变量能改变外部吗_在Python函数中修改变量会影响函数外部具有......

我有一个嵌套的字典,其中包含大量有关许多不同对象的数据(其中我指的是非编程意义上的对象).字典的格式为allData [i] [someDataType],其中i是我拥有数据的对象的数字标识,someDataType是与所讨论的对象关联的特定数据数组.

现在,我已经定义了一个函数,该函数需要特定的数据数组才能对每个对象执行计算.数据数组称为cleanFDF.因此,我将其连同函数需要执行的其他操作一起馈入了函数.我这样称呼它:

rm.analyze4complexity(allData[i]['cleanFDF'], other data, other data, other data)

在函数本身内部,我直接将cleanFDF数据重新分配给另一个变量名称,即clFDF.即最终结果是:

clFDF = allData[i]['cleanFDF']

然后,我必须将低于某个阈值的所有数据归零,如下所示:

clFDF[ clFDF < threshold ] = 0

OK-该功能按预期工作.但是现在当我尝试在主脚本中重新绘制原始的cleanFDF数据时,在clFDF中清零的条目也在allData [i] [‘cleanFDF’]中清零. WTF?显然这里发生了我不理解的事情.

为了使事情变得更奇怪(从我的角度来看),我试图通过在调用函数之前将数组“保存”到另一个变量来解决这个难题.即我做

saveFDF = allData[i]['cleanFDF']

然后运行该功能,然后使用“已保存”数据更新cleanFDF条目:

allData[i].update( {'cleanFDF':saveFDF} )

但是以某种方式,只需执行clFDF [clFDF

最佳答案

您正在通过引用在allData [i] [‘cleanFDF’]处传递值(在https://stackoverflow.com/a/430958/337678处有不错的解释).对其所做的任何更改都将对其所引用的对象进行,该对象仍与原始对象相同,只是分配给了一个不同的变量.

制作数据的深层副本可能会解决您的问题(Python的Deepcopy库应该可以解决问题;).

你可能感兴趣的:(python函数内部变量能改变外部吗_在Python函数中修改变量会影响函数外部具有......)