是的,你当然可以用 Python 做到这一点
如果你的常量只是一个数字——比如说,你刚刚发现了tau——那么你只需在一个模块中声明它,然后将该模块导入所有其他源文件中:
常量.py:
# Define my new super-useful number
TAU = 6.28318530718
其他地方:
from constants import TAU # Look, no calculations!
扩展一点,如果你有一个更复杂的结构,比如字典,需要很长时间来计算,那么你可以在你的模块中声明它:
常量.py:
# Verified results of the national survey
PEPSI_CHALLENGE = {
'Pepsi': 0.57,
'Coke': 0.43,
}
您可以对越来越复杂的数据执行此操作。最终,问题在于编写常量模块变得越来越难,数据越复杂,如果偶尔重新计算要缓存的值,更新可能会特别困难。在这种情况下,您希望查看酸洗数据,可能是计算数据的 python 脚本的最后一步,然后将该数据加载到您导入的模块中。
为此,请导入 pickle,并将单个对象转储到磁盘文件中:
重新计算.py:
# Here is the script that computes a small value from the hugely complicated domain:
import random
from itertools import groupby
import pickle
# Collect all of the random numbers
random_numbers = [random.randint(0,10) for r in xrange(1000000)]
# TODO: Check this -- this should definitely be 7
most_popular = max(groupby(sorted(random_numbers)),
key=lambda(x, v):(len(list(v)),-L.index(x)))[0]
# Now save the most common random number to disk, using pickle
# Almost any object is picklable like this, but check the docs for the exact details
pickle.dump(most_popular, open('data_cache','w'))
现在,在您的常量文件中,您可以简单地从磁盘上的文件中读取腌制数据,并使其可用而无需重新计算:
常量.py:
import pickle
most_popular = pickle.load(open('data_cache'))
其他地方:
from constants import most_popular