我试图将我的python代码拆分成几个文件:
file1.py
from file2 import *
var1 = 7
func_file2()
file2.py
def func_file2():
var2 = var1
所以它说:
NameError: global name 'var1' is not defined
我该如何解决?
我尝试在file2中导入file1。
答案 0 :(得分:1)
var1
在file1
中定义,但您在file2
中引用它。您可以将var1
移至file2
以修复错误。
<强> file1.py 强>
from file2 import *
func_file2()
<强> file2.py 强>
def func_file2():
var1 = 7
var2 = var1
您可能想首先在file1
导入file2
以定义var1
,但这会导致循环导入(file1
和file2
互相参考)。
答案 1 :(得分:0)
func_file2没有变量var1的可见性,因为当它被定义时,var1不存在于任何范围内,因此闭包不起作用。
当你在python中编写模块时,遵循内聚的原则,这意味着如果模块中的函数使用来自另一个模块的变量,则可能是错误的。
答案 2 :(得分:0)
我建议您不要使用全局变量,但是如果您希望它以现在的方式工作,您可以执行以下操作:
first file
global var1
var1 = 7
second file
from first_file_name import var1 #this will make your var1 accessible from the second file
我希望它有所帮助。