导入,修改,重新导入!代码结构问题(python)

时间:2016-10-26 03:39:41

标签: python import global-variables

考虑以下代码,我执行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上执行的导入会重写变量的值。我也试过使用全局变量,但我找不到方法。

1 个答案:

答案 0 :(得分:1)

不要导入*。它没有做你认为它做的事情。它也会产生其他问题。

无论如何,这里发生了什么:

由于settings.py包含两个变量:MAX_AR_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_AR_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