constants.py
import os
from datetime import date
dates = datetime.datetime.now().strftime("mon_%m_day_%d_%H_%M")
out_dir = 'C:\\'+'_'+dates+os.sep
file_a.py
from constants import *
# Use out_dir
file_b.py
from constants import *
# Use out_dir
在上面的代码中,我创建了一个目录,其中包含名称中嵌入的当前日期和时间。然后我将该文件导入2个单独的.py文件中。但是,我发现out_dir在日期发生变化时在file_b.py中发生了变化。关于如何解决这个问题的任何想法?
或者,有没有办法找出out_dir何时发生变化?
答案 0 :(得分:2)
由于您要重新分配变量,因此第一个out_dir
的引用与第二个out_dir
的引用不同。这意味着,虽然感觉相同(因为名称相同),但它们内部有两个不同的(不相交的)内存位置。
要解决此问题,只需将导入更改为:
import constants
并像
一样使用它们constants.out_dir
这可以确保您对模块constants
进行查找,从而可以访问上一个分配。
答案 1 :(得分:1)
当Python导入模块时,模块中的所有代码都只评估一次。因此,当您运行脚本时,在导入constans.py的所有模块中,您必须获得相同的out_dir值。
你说你得到了不同的结果。
print "imported constants"
你的进口错误。
import os
import datetime
`print "imported constants"`
dates = datetime.now().strftime("mon_%m_day_%d_%H_%M")
out_dir = 'C:\\'+'_'+dates+os.sep
如果你看到文字导入的常量多了一次,这意味着你有重新加载麻烦()