考虑以下代码,我执行main.py文件。
settings.py
long
utils.py
MAX_A = 10 R_SEED = 3
main.py
from settings.py import * def exemple(): print MAX_A
输出
from settings.py import * from utils.py import * MAX_A = 11 print MAX_A # It prints 11 # Function from utils example() # It prints 10
我想找到一种方法来改变main.py文件中MAX_A的值,它会改变导入它的任何其他文件的变量的初始值。
我理解我在utils.py上执行的导入会重写变量的值。我也试过使用全局变量,但我找不到方法。
答案 0 :(得分:1)
不要导入*
。它没有做你认为它做的事情。它也会产生其他问题。
无论如何,这里发生了什么:
由于settings.py包含两个变量:MAX_A
和R_SEED
,因此它们是相同的:
from settings import *
from settings import MAX_A, R_SEED # same thing, but better
后者更好,因为你知道你要导入什么。 from settings.py import *
完全错了,BTW。
现在,from settings import MAX_A, R_SEED
几乎与以下内容相同:
import settings
MAX_A = settings.MAX_A
R_SEED = settings.R_SEED
它的作用是创建局部变量MAX_A
和R_SEED
,它们被初始化为settings.py
的值。
要实际修改settings
中的值,您不能创建复制变量。
import settings
print(settings.R_SEED) # always read from variable in settings
settings.R_SEED = 11 # always write to variable in settings