我正在运行一个名为file1的python文件,其中,我正在导入另一个名为file2的python文件,并调用其功能之一。现在,file2需要文件1中定义的变量的值。此外,在将file2导入文件1中之前,该变量的值在运行时已更改。如何制作文件file2
,从文件1访问变量的当前值?
file1的内容是:
variable = None
if __name__ == '__main__':
variable = 123
from file2 import func1
func1()
file2的内容为:
from file1 import variable as var
def func1():
print(var)
运行file1时,我希望file2中的功能func1
打印123。但是它会打印None
。解决此问题的一种方法是,在修改变量后将其内容保存在某个普通文件中,然后在需要时进行检索。但是在我使用此代码的应用程序中,变量的大小很大,大约为300 MB。因此,我相信每次对其进行修改时,将变量的内容写入文本文件的效率都不够高。我该怎么做呢? (欢迎提出任何建议)
答案 0 :(得分:1)
主脚本以名称spring.datasource.url
运行,而不是其模块名称。 __main__
检查的工作方式也是如此。通过其常规名称导入它会创建一个包含常规内容的单独模块。
如果要访问其属性,请将其导入为if __name__ == '__main__'
:
__main__
请注意,导入from __main__ import variable as var
def func1():
print(var)
很脆弱。除了复制模块之外,如果程序结构发生更改,您可能最终会导入其他模块。如果要交换全局数据,请使用定义明确的模块名称:
__main__
强制性免责声明:理想情况下,函数不依赖于全局变量。使用参数将变量传递给函数:
# constants.py
variable = None
# file1.py
if __name__ == '__main__':
import constants
constants.variable = 123
from file2 import func1
func1()
# file2.py
from constants import variable as var
def func1():
print(var)