在函数内部具有变量变量

时间:2020-10-04 09:00:05

标签: python function variables

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

#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,但随后我仍然需要单独解决每个变量的问题,以为其分配值。 另一个选项可能是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__输入/参数的清单很长?还是我受此约束?

0 个答案:

没有答案