首页 > 解决方案 > 在函数内部有一个变量变量

问题描述

我想将函数的输入(我们称之为标签)插入到全局变量的名称中,因此它是基于输入的唯一变量。在示例脚本中,这将类似于:

#Script/function 1 - when a file is deleted in a folder it triggers an event 
# that runs function on_deleted():

on_deleted()
def on_deleted(event):
    if "partoffilename1" in list_of_files:
        do_this(label1)
    elif "partoffilename2" in list_of_files:
        do_this(label2)
#Script/function 2 - for every label input it has its own variable that has some
# calculations/iterations on a 'long' list of globals (!). So for each label it should 
# pick its unique global, but also some globals that span across the other labels.

def do_this(label):
   #Import globals here, which mostly all the variabeles below
   label_min += -1
   label_done = abs(label_min)
   start_time_label = datime.now()
   #and then around 180 more lines of code with each a unique variable for the label

我无法弄清楚的技巧是如何根据作为标签的第二个函数do_this()的输入使变量可变。目前,我刚刚将它复制粘贴到一个实例中,并根据标签重命名了所有变量......所以这是一个很难维护的丑陋而长的代码。

我考虑dict在第二个函数中使用 a ,但是我仍然需要单独处理每个变量以为其分配一个值。另一个选项可能是 a class,但我在一个类中有很长的变量列表,我不知道如何避免以下情况:

class label:
   class_variable_1 = "bla1"
   class_variable_2 = "bla2"
   
   def __init__(self, param1, param2, ....., param100):
      self.instance_var1 = param1
      self.instance_var2 = param2
      ....
      self.instance_var100 = param100

所以也许问题应该是,是否有一个聪明的解决方案来避免def __init__类内的输入/参数的长列表?还是我受此约束?

标签: pythonfunctionvariables

解决方案


推荐阅读