2013-02-26 86 views
0

你好。我正在嘗試使用在main.py中創建的全局dict,這在functions.py中調用。 在我main.py我:Python全局字典跨越不同的文件腳本

import sys,os,... 
import functions.py #import my second file 

matrix = {} 
matrix_do_something 
search_the_matrix(value) #which is defined in functions.py 

#FILE: functions.py 
def search_the_matrix(value): 
    global matrix 
    if value in matrix: 
     return True 
    else: 
     return False 

,我得到這個錯誤:

NameError: global name 'matrix' is not defined 

我已經閱讀stackoverflow的解決方案,它說把一切都在一個全局文件然後從每個文件global.matrix [value]調用,但我不想要這個。我想把它稱爲矩陣,並將其視爲我的全局矩陣。這可能嗎? 預先感謝您

+0

你是從'main.py'(in'functions.py')導入'matrix'嗎? – 2013-02-26 08:39:27

+0

另外,你不''import functions.py',你'輸入函數' – aychedee 2013-02-26 08:40:05

回答

3

在functions.py你就必須將其導入

from main import matrix 

雖然我想拿出我的模塊比主一個更好的名字。

如果你想要一個對象在模塊/文件中可用,你需要在那裏創建它或從其他地方導入它。

+0

謝謝!我現在覺得很愚蠢。我雖然我可以用導入命令只導入函數和文件。 – NoobTom 2013-02-26 08:58:06

+0

每種語言都有自己的全局名稱空間概念,所以不用擔心。 Python具有每個模塊名稱空間。而模塊內的每個函數都在它自己的閉包中。您通常不需要使用'global'關鍵字 – aychedee 2013-02-26 18:39:09