首先構件一個settings.py文件,裏面包涵多種類型的變量,別的模塊從settings.py文件,導入變量測試。python
# settings file class TestClass(object): def __init__(self, var): self.var = var var_string = 'change_before' var_int = 1 var_list = [1] var_dict = {'a': 'a'} var_object = TestClass('object var before')
1. 使用from . import . 方法導入變量app
下面定義了改變settings模塊的變量的方法測試
# change.py file from settings import var_string, var_int, var_list, var_dict, var_object def change_setting(): var_string = "change_after" var_int = 2 var_list.append(2) var_dict['a'] = 'b' var_object.var = "change_after"
而後是test.pycode
# test file import settings from change import change_setting change_setting() print "var_string: %s" % settings.var_string print "var_int: %s" % settings.var_int print "var_list: %s" % settings.var_list print "var_dict: %s" % settings.var_dict print "var_object var: %s" % settings.var_object.var
運行結果爲:string
var_string: change_before var_int: 1 var_list: [1, 2] var_dict: {'a': 'b'} var_object var: change_after
能夠看到string和int類型的變量,其實並未被改變.it
2. 使用import方法class
修改change.py 文件test
import settings def change_setting(): settings.var_string = "change_after" settings.var_int = 2 settings.var_list.append(2) settings.var_dict['a'] = 'b' settings.var_object.var = "change_after"
再次運行test.py, 輸出結果爲:import
var_string: change_after var_int: 2 var_list: [1, 2] var_dict: {'a': 'b'} var_object var: change_after
能夠看見string和int的類型的變量,被改變了。變量
結論:
當有相似settings.py的文件時,做爲整個項目的全局變量。導入時, 儘可能使用import方法, 而不要用from import 方法。不然當動態修改settings.py的變量時,而且變量類型是不可變的。並不會使變量改變。