Измените значение локальной переменной, чтобы имя переменной было выражено в виде строки.Python

Программы на Python
Ответить
Anonymous
 Измените значение локальной переменной, чтобы имя переменной было выражено в виде строки.

Сообщение Anonymous »

Я пытаюсь найти хороший и безопасный способ вызова переменной с помощью подстановки строки, чтобы установить ее значение. Это скорее передовая практика, и я ищу наилучший способ сделать это.

Прежде всего, использование словаря или подобной структуры — это не то, что мне нужно. Я хочу установить значение переменной!

Пример;

Код: Выделить всё

def test_my_var(name_param, val):
# Set initial values for each variable
my_var_1 = -1
my_var_2 = -1
my_var_3 = -1
...
my_var_n = -1
# Now I will update the value of mth variable
my_var_%{name_param}s = val  # Of course this will not work!!
# Now print the new value of this variable
print my_var_%{name_param}s
Я ищу практический способ добиться этого. Вот что проверено и не работает:

Я не хочу хранить свои переменные в dict или подобной структуре. Это локальные переменные внутри функции, и они должны оставаться такими, какие они есть.

Я не предпочитаю использовать exec, поскольку он выполняет любую отправленную команду! Таким образом, приведенный ниже вариант не является хорошим и недействительным.

Код: Выделить всё

def test_case(index, val):
var_1 = -1
var_2 = -1
exec("var_%s" = %s % (index, val))
print eval("var_%s" % index)
Проверены способы использования locals() и установки значения, но не удалось этого сделать

Код: Выделить всё

def test_case(index, val):
val_1 = -1
val_2 = -1
print locals()["val_%s" % index]
locals()["val_%s" % index] = val
print val_1, val_2  # That will not update the calue of the variable `val_1` or any other variable
Поэтому я ищу разумный способ изменить значение переменной, где имя переменной будет выражаться в виде подстановки строки.

Подробнее здесь: https://stackoverflow.com/questions/324 ... essed-as-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»