2
次のコードのようなモジュールを作成したいと思います。これらの関数は別々のファイルに格納されます。メイン関数で関数内のデータフレームへのアクセス
def function_1(arg):
x1, x2= arg
x3, x4= dataframe.loc[index, column_list]
d1, d2 = some computation
return (d1, d2)
def function_2(arg):
y1, y2= arg
y3, y4= dataframe.loc[index, column_list]
d1, d2= function_1(arg)
return (a pair of non-linear functions)
def function_3(dataframe):
data_preprocess
x, y = fsolve(function_2, initial_values)
some process
return (a new dataframe)
、私はこのモジュールをインポートした後、次のようにfunction_3
にデータを渡します。
dataframe=read_csv(directory)
some data preprocess
dataframe = function_3(dataframe)
しかし、私は次のようなエラーメッセージが出ます:
NameError: name 'dataframe' is not defined in 'function_2'
は以下は、私の考えです。彼らは「メイン」の「データフレーム」を参照しますので、おそらく が、助けにはなりません「function_2」と「function_1」内の「グローバル」のキーワードを使用して
- 。
- キーワード 'nonlocal'は、 ネストされた方法で書かれていないため、同様に役立たないでしょう。
- データフレームをパラメータとして追加すると、それは 'fsolve'に影響しますか?
私が間違っている場合は、親切に私を修正してください。コードをどのように変更すればよいですか?
申し訳ありませんが、私は最初はあなたの質問を誤解しました。あなたは実際にあなたの推理の中でスポットを当てています。あなたは、問題#3を回避するためにあなた自身の入れ子にされた範囲を作る考え方を見逃しているだけです。回答が投稿されました。 –
@MadPhysicistありがとうございました。それは非常に巧妙な考えです。 –