2013-11-26 3 views
0

В моей main() функции открыть конфигурационный файл:Python: NameError: глобальное имя 'х' не определен

cfg = {} 
execfile("config.conf", cfg) 

config.conf выглядит следующим образом:

x = 10 

Позже я используйте cfg[x], что дает мне NameError: global name 'x' is not defined. Я взял пример с here, как я его использую, выглядит правильно для меня.

Почему я получаю эту ошибку?

ответ

1

В связанном вопросе значения доступны со строками сопоставления имен идентификаторов:

print config["value1"] 

Кроме того, вы должны использовать строку.

cfg["x"] 

Пример:

cfg = {} 
exec("x=23", cfg) 
print cfg["x"] 

Результат:

23 
+0

Для полноты, 'ExecFile ('config.conf')' (без второго аргумента) будет действительно установить значение ' x' до 10, поскольку 'execfile' будет использовать глобальное пространство имен вместо' cfg'. – chepner

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