locals().update(словарь) не добавляет все переменные
Я загружаю переменные, используя объекты словаря, но значения обновляются. Что мне здесь не хватает?
assert "run_LMM" in all_variables.keys()
locals().update(all_variables)
assert "run_LMM" in locals()
Последняя строка, где я получил ошибку подтверждения. В чем дело?
1 ответ
Решение
Это ожидаемое поведение, по документам:
Содержание этого словаря не должно быть изменено; изменения могут не повлиять на значения локальных и свободных переменных, используемых интерпретатором.
Я думаю, что одной из причин этого является то, что переменная является глобальной или локальной, определяется во время компиляции функции, так что в:
def func():
locals()['val'] = 1
print val
последний оператор всегда читает из глобальной переменной, так как локальная переменная не объявлена. Таким образом, возможность динамического добавления местных жителей усложнит жизнь.