2013-02-26 80 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