我做科学编程,经常想给用户显示提示和变量对,让他们编辑变量,然后用新变量进行计算。我经常这样做,所以我编写了一个 wxPython 类来将此代码移出主程序。您为每个变量设置一个列表,其中包含变量的类型(字符串、浮点数、整数)、提示符和变量的当前值。然后将所有这些列表放在一个大列表中,我的实用程序会创建一个格式整齐的 wxPython 面板,其中包含提示和可以编辑的当前值。
当我开始时,我只有几个变量,所以我会写出每个变量。
s='this is a string'; i=1; f=3.14
my_list=[ ['s','your string here',s], ['i','your int here',i], ['f','your float here'],]
input_panel = Input(my_list)
# the rest of the window is created, the input_panel is added to the window, the user is
# allowed to make choices, and control returns when the user hits the calculate button
s,i,f = input_panel.results() # the .results() function returns the values in a list
现在我想将这个例程用于很多变量(10-30),这种方法正在崩溃。我可以使用 list.append() 语句在多行上创建函数的输入列表。但是,当代码从函数返回时,我得到了这个需要解压缩到正确变量中的巨大列表。这很难管理,看起来很容易让输入列表和输出列表不同步。更糟糕的是,它看起来很笨拙。
将大量变量传递给带有额外信息的 Python 函数以便可以编辑它们,然后取回变量以便我可以在程序的其余部分中使用它们的最佳方法是什么?
如果我可以通过引用将变量传递给函数,那么用户可以更改或不更改它们,一旦程序从函数返回,我将使用这些值。我只需要在多行上构建输入列表,并且输入列表不会与输出列表不同步。但是 Python 不允许这样做。
我应该将大列表分解成较小的列表,然后组合成大列表以传入和传出函数吗?或者这只是增加了更多出错的地方?