你如何在Python中声明一个全局常量?

时间:2014-06-10 06:03:08

标签: python python-2.7

我的程序开始时我想做一些繁重的计算,然后我想将结果(一个大的凹凸矩阵)保存在内存中,以便我可以一次又一次地使用它。我的程序包含多个文件和类,我希望能够从任何地方访问此变量,并且如果可能的话,将其定义为常量。

如何在Python中定义全局常量?

4 个答案:

答案 0 :(得分:20)

您可以在模块级别声明一个变量,并在模块中将其用作global变量。您也可以将其导入其他模块。

#mymodule.py
GLOBAL_VAR = 'Magic String' #or matrix...

def myfunc():
    global GLOBAL_VAR
    #do something

或在其他模块中:

from mymodule import GLOBAL_VAR

答案 1 :(得分:18)

我不认为标记为好的答案可以解决操作问题。 Python中的global关键字用于修改本地上下文中的全局变量(as explained here)。这意味着,如果在SOME_CONSTANT内操作修改 myfunc,则此更改也会影响外部功能范围(全局)。

global的开头不使用myfunc关键字比建议的全局常量更接近。尽管没有办法在Python中使变量保持不变。

答案 2 :(得分:2)

无法在Python中声明常量。你可以使用

SOME_CONSTANT = [...]

如果声明它的文件名是file1.py,那么您可以通过以下方式从其他文件访问它:

import file1

print file1.SOME_CONSTANT

假设两个文件都在同一目录中。

答案 3 :(得分:0)

我不确定你的意思是'全球常数&#39 ;;因为Python中没有常量(没有"数据保护"所有变量都可以访问)。

您可以实现singleton pattern,但每次都必须在运行时重新生成

您的另一个选择是将结果存储在外部商店(例如,redis)中,可以从所有流程访问。

根据数据集的大小,将其外部存储在像redis这样的快速K / V中也可以提高性能。

你仍然需要转换并加载它,因为redis不知道numpy数组是什么(尽管它有many complex types你可以利用它。)