2013-02-26 2 views
0

Здравствуйте. Я пытаюсь использовать глобальный dict, созданный в main.py, который вызывается в functions.py. В моей main.py у меня есть:Python global dict через другой скрипт файла

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 [значение], но я не хочу этого. Я хочу просто назвать его матрицей и подумать об этом как о своей глобальной матрице. Это возможно? Спасибо заранее

+0

Вы импортируете 'matrix' из' main.py' (в 'functions.py')? –

+0

Кроме того, вы не «импортируете функции.py', вы« импортируете функции » – aychedee

ответ

3

В functions.py вы должны импортировать его

from main import matrix 

Хотя я хотел бы, чтобы придумать лучшее название для моего модуля, чем основной.

Если вы хотите, чтобы объект был доступен в модуле/файле, вам нужно либо его создать, либо импортировать его из другого места.

+0

Спасибо! теперь я чувствую себя таким глупым. Хотя я мог импортировать только функции и файлы с этой командой импорта. – NoobTom

+0

На каждом языке есть своя концепция глобального пространства имен, поэтому не беспокойтесь. Python имеет пространство имен для каждого модуля. И каждая функция внутри модуля находится внутри собственного закрытия. Обычно вам не нужно использовать ключевое слово 'global' – aychedee

Смежные вопросы