私は科学的プログラミングを行っており、ユーザーにプロンプトと変数のペアを表示し、変数を編集させてから、新しい変数を使用して計算を実行させたいことがよくあります。私はこれを頻繁に行うので、wxPython クラスを作成して、このコードをメイン プログラムから移動しました。変数の型 (string、float、int)、プロンプト、および変数の現在の値を使用して、変数ごとにリストを設定します。次に、これらすべてのリストを 1 つの大きなリストに配置すると、私のユーティリティが適切にフォーマットされた 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 はこれを許可しません。
大きなリストを小さなリストに分割してから、関数に出入りするために大きなリストに結合する必要がありますか? それとも、エラーを起こす場所が増えるだけですか?