代码之家  ›  专栏  ›  技术社区  ›  AlexT

python-基于函数参数构造变量名

  •  1
  • AlexT  · 技术社区  · 7 年前
    def my_func(arg):
        ...
        x = foo(var_arg)
        ...
    

    许多变量保存为 var_1 , var_2 , var_3 我可以根据foo函数的参数传递其中一个。所以如果我打电话 my_func(2) ,在函数中 x 将等于 foo(var_2) . 是否可以像使用字符串那样构造变量名?

    2 回复  |  直到 7 年前
        1
  •  2
  •   kmario23 Mazdak    7 年前

    如何使用字典来存储变量,然后根据传递的参数动态构造变量名,然后访问相应的值,这些值可以作为参数传递给函数 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
    
        2
  •  1
  •   Chris    7 年前

    我建议你用字典。在我看来,这将是最有效的选择。例如,假装 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'
    

    如您所见,在使用字典时,您甚至不需要变量。直接使用这个值。