def my_func(arg):
...
x = foo(var_arg)
...
Со многими переменными, сохраненными как var_1
, var_2
, var_3
я мог бы передать один из них на основе аргумента функции foo. Поэтому, если я вызову my_func(2)
, функция x
будет равна результату foo(var_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
Я рекомендую вам использовать словари. На мой взгляд, это будет самый эффективный вариант. Например, притворите 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'
Как вы можете видеть, вам действительно не нужны переменные при использовании словаря. Просто используйте значение напрямую.