Python - построение имени переменной на основе аргумента функции

1
def my_func(arg):
    ...
    x = foo(var_arg)
    ...

Со многими переменными, сохраненными как var_1, var_2, var_3 я мог бы передать один из них на основе аргумента функции foo. Поэтому, если я вызову my_func(2), функция x будет равна результату foo(var_2). Можно ли построить имя переменной, подобное строкам?

  • 0
    Возможная копия: stackoverflow.com/questions/1373164/…
  • 0
    Не совсем @JustinWager. ОП, кажется, уже имеет переменные. Им просто нужен хороший способ связать определенные переменные с определенными параметрами.
Теги:
function
variables

2 ответа

2

Как насчет использования словаря для хранения переменных, а затем динамического построения имен переменных на основе переданных аргументов, а затем доступа к соответствующим значениям, которые затем могут передаваться как аргумент функции foo

In [13]: variables = {"var_1" : 11, "var_2": 22, "var_3": 33} 
    ...:  
    ...: def my_func(arg): 
    ...:     full_var = "var_" + str(arg)
    ...:     print(variables[full_var])
    ...:     # or call foo(variables[full_var])    
In [14]: my_func(1)                                                      
11

In [15]: my_func(2)
22

In [16]: my_func(3)
33
  • 1
    лол, великие умы думают одинаково ;-) +1
1

Я рекомендую вам использовать словари. На мой взгляд, это будет самый эффективный вариант. Например, притворите var_1, var_2 и var_3 равными 'a', 'b' и 'c' соответственно. Вы тогда напишите:

d = {1: 'a', 2: 'b', 3: 'c'}

def foo(var):
    return d[var]

def my_func(arg):
    x = foo(var_arg)
    return x

my_func(1) # returns: 'a'

Как вы можете видеть, вам действительно не нужны переменные при использовании словаря. Просто используйте значение напрямую.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню