如何在Python中声明全局常量?
我有一些比较复杂的计算想在我的程序启动时进行,然后我想把结果(一个很大的不规则矩阵)保存在内存中,这样我就可以反复使用它。我的程序包含多个文件和类,我希望能够在任何地方访问这个变量,如果可以的话,还想把它定义为常量。
在Python中,怎么定义一个全局常量呢?
5 个回答
0
另一种方法是直接从你的常量文件中导入常量。
选项 1
globals.py
MY_CONSTANT = "Some constant value"
main.py
from globals import MY_CONSTANT
print(MY_CONSTANT)
选项 2
globals.py
MY_CONSTANT = "Some constant value"
main.py
import globals
print(globals.MY_CONSTANT)
所以你可以选择导入文件中的一堆常量(选项 2)或者只导入一个常量(我更喜欢选项 1)。
8
在Python中没有办法声明一个常量。你可以直接使用
SOME_CONSTANT = [...]
如果你声明常量的文件名是 file1.py
,那么你可以通过以下方式在其他文件中访问它:
import file1
print file1.SOME_CONSTANT
假设这两个文件在同一个文件夹里。
37
我觉得被标记为好答案的内容并没有解决提问者的问题。在Python中,global
这个关键词是用来在一个局部环境中修改全局变量的(这里有详细解释)。这意味着如果提问者在myfunc
函数里修改了SOME_CONSTANT
,那么这个变化也会影响到函数外部(也就是全局范围内)。
在myfunc
的开头不使用global
关键词,更接近于全局常量的意思,而不是建议的那种。尽管在Python中没有办法让一个值变成常量或不可变的。
49
你可以在模块的最外层声明一个变量,这样它就可以在这个模块里当作全局变量使用。而且你还可以把它导入到其他模块中。
#mymodule.py
GLOBAL_VAR = 'Magic String' #or matrix...
def myfunc():
print(GLOBAL_VAR)
在其他模块中:
from mymodule import GLOBAL_VAR