【发布时间】:2010-10-29 02:11:30
【问题描述】:
我做科学编程,经常想给用户显示提示和变量对,让他们编辑变量,然后用新变量做计算。我经常这样做,所以我编写了一个 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 不允许这样做。
我是否应该将大列表分解成更小的列表,然后再组合成大列表以传入和传出函数?还是只是增加了更多出错的地方?
【问题讨论】:
标签: python pass-by-reference pass-by-value