Альтернативы exec/eval?
Я пытаюсь найти способ надежно установить и получить значения переменных с именами в строках. Все, что я могу найти удаленно близко к этому, похоже, не всегда работает. Переменные могут быть в любом модуле, и эти модули импортируются.
Каков безопасный/правильный способ получить и установить значения переменных?
ps - Я как newb, поскольку они приходят на python
Ответы
Ответ 1
Пока это будет работать, обычно не рекомендуется использовать имена переменных, имеющие значение для самой программы.
Вместо этого лучше использовать dict:
mydict = {'spam': "Hello, world!"}
mydict['eggs'] = "Good-bye!"
variable_name = 'spam'
print mydict[variable_name] # ==> Hello, world!
mydict[variable_name] = "some new value"
print mydict['spam'] # ==> "some new value"
print mydict['eggs'] # ==> "Good-bye!"
(код, взятый из другого ответа и измененный)
Ответ 2
spam = "Hello, world!"
variable_name = 'spam'
print globals()[variable_name] # ==> Hello, world!
globals()[variable_name] = "some new value"
print spam # ==> some new value