python - 在函数内部有一个变量变量
问题描述
我想将函数的输入(我们称之为标签)插入到全局变量的名称中,因此它是基于输入的唯一变量。在示例脚本中,这将类似于:
#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__
类内的输入/参数的长列表?还是我受此约束?
解决方案
推荐阅读
- c# - 在代码隐藏 (Control.Template.FindName) 中找不到 XAML 控件
- java - 带有网格的 Vaadin8 错误 - 无法设置为酸的
- php - Symfony 3.4 - 发送电子邮件(在 null 时调用成员函数 get()(500 内部服务器错误))
- asp.net - NLog 添加数据库模式名称
- c# - 报告哈希进度
- macos - 远程端口转发 SSH 被视为从 127.0.0.1 访问的无效用户
- android - 没有java的android NDK adb可执行文件
- mysql - 类别、子类别和服务的数据库结构
- javascript - 嵌套函数和未定义值中的“this”问题
- ios - Ionic iOS - 复制一些 HTML 视频后变黑