哪种技术的内存消耗最低:全局变量或函数参数?

Voo*_*d92 0 python memory garbage-collection memory-management duplicate-data

我正在编码的程序现在制作了一个非常庞大的数据项列表.

现在,我可以将此列表设置为全局(可用于其他模块中的其他功能),并可用于所有其他模块.或者,我也可以将它们作为模块中函数的函数参数传递.

请注意,我正在谈论的这个庞大的数组不会在其他模块的函数中被修改,它们只是读取数据并将其用于计算和数据统计等.

那么,两种内存消耗最少的方法呢?

如果通过传入函数,如果语言使得巨大列表的本地副本即使函数没有修改它......那将是内存消耗的倍增,这不是好事.如果发生这种情况,我可以将其全局化并使用它.我对python的内存管理有这个疑问,因为当我曾经写过一个玩具语言时,我包含了这个特殊的问题.即,只有在编辑过的时候,参数数据才会被复制.否则,它总是指向原始数据.

Dan*_*man 6

首先,Python中没有"全局"变量(在某种意义上它可以自动用于所有模块).

其次,Python在传递给函数时不会复制对象.Python变量实际上只是指向对象的名称 - 当您将变量传递给函数时,所发生的一切就是函数创建一个指向原始对象的新名称.您可以在不进行任何复制的情况下阅读或修改该对象的内容.(请注意,如果将名称重新绑定到其他对象,则不会更改原始引用.)