模塊的全局變量

首先構件一個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的變量時,而且變量類型是不可變的。並不會使變量改變。

相關文章
相關標籤/搜索