How to get the value of a variable given its name in a string? [duplicate]
Как получить значение переменной с учетом ее имени в строке?
Для простоты это урезанная версия того, что я хочу сделать:
deffoo(a): # I want to print the value of the variable # the name of which is contained in a
Я знаю, как это сделать в PHP:
function foo($a) { echo $$a; }
global $string = "blah"; // might not need to be global but that's irrelevant foo("string"); // prints "blah"
Есть какой-нибудь способ сделать это?
Переведено автоматически
Ответ 1
Если это глобальная переменная, то вы можете сделать:
>>> a = 5 >>> globals()['a'] 5
Примечание о различных решениях "eval": вы должны быть осторожны с eval, особенно если оцениваемая вами строка поступает из потенциально ненадежного источника - в противном случае вы можете в конечном итоге удалить все содержимое вашего диска или что-то в этом роде, если вам будет предоставлена вредоносная строка.
(Если оно не глобальное, то вам потребуется доступ к любому пространству имен, в котором оно определено. Если у вас его нет, вы никак не сможете получить к нему доступ.)
Ответ 2
Ответ Эдварда Лопера работает, только если переменная находится в текущем модуле. Чтобы получить значение в другом модуле, вы можете использовать getattr:
import other printgetattr(other, "name_of_variable")