我想避免重新计算Python中昂贵的数组。幸运的是它是不可变的 - 所以“复制指针”就足够了。不幸的是,程序被分成了一大堆模块,我需要它在这里和那里,变量在Python中最多是模块全局的。在我计算一次之后,如何将数组“导入”到另一个模块中(例如在main中)?
(对不起,没有任何有用的代码)
那么,实际结果是该程序是一只蜗牛并且进行1000000次运行以获得有意义的统计数据是不可能的......
如果将bigArray计算放在模块bigArray.py中,您应该可以通过专门导入它在任何其他模块中使用它:
from bigArray import bigArray
如果您希望仅在首次引用数组时计算该数组,则bigArray.py模块可以使用函数公开它。
# bigArray.py
#
bigArray = None
def getBigArray():
if bigArray is None:
... build the bigArray ...
return bigArray
# otherModule.py
#
from bigArray import getBigArray
...
arr = getBigArray() # to use the array
...
如果我的理解是正确的(请随意纠正我),那么如果某事是workspace.py
中的全局变量并且我有另一个程序project.py
我可以运行from workspace import *
来获得与我的workspace.py
文件相同的全局变量命名空间。这通常是不赞成的,因为你可能无意中重用了相同的变量名而没有意识到它,从而破坏了你的程序。它(在大多数情况下不必要)将所有变量加载到RAM中,基本上使project.py
只是原始workspace.py
的扩展,可以访问相同的类,方法和变量。