Python - построение имени переменной на основе аргумента функции - PullRequest
0 голосов
/ 12 октября 2018
def my_func(arg):
    ...
    x = foo(var_arg)
    ...

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

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Как насчет использования словаря для хранения переменных и последующего динамического построения имен переменных на основе переданных аргументов, а затем доступа к соответствующим значениям, которые затем можно передать в качестве аргумента функции 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
0 голосов
/ 12 октября 2018

Я рекомендую вам использовать словари.На мой взгляд, это был бы наиболее эффективный вариант.Например, представьте, что 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'

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...