2017-11-15 3 views
0

定義済みの関数をモジュール内に保存しました。これを新しいスクリプトにインポートしました。Python - 異なるモジュールで定義された関数に必要な変数へのアクセス

この関数内では、変数master(パンダのデータフレーム)が照会されます。しかし、masterは関数の引数の1つではなく、スクリプトに関係なくアクセスすることを望んでいるデータフレームです。

私の新しいスクリプトでは、前述の機能を使用しようとすると、私は次のエラーを取得する:

NameError: name 'master' is not defined 

しかし、私はコンソールにmasterを入力すると、それは問題またはエラーなしで印刷します。

私はローカル変数やグローバル変数と関係があると思いますが、私はPythonには新しく、エラーを修正する方法を理解するのに苦労しています。

+0

「マスター」からしか読めない場合は、すでにアクセス可能である必要があります。しかし、あなたがそれを変更するならば、グローバル変数として 'グローバルマスター'宣言を使ってアクセスする必要があります。 – CrazyElf

答えて

1

Within this function, the variable master (a pandas dataframe) is queried. However, master is not one of the arguments in the function

あなたの関数内でのグローバルマスター "としてそれを参照してください試してみてください。 (私が正しく理解していれば)あなたの "マスター"変数はあなたのスクリプトとそのスクリプトによってインポートされたモジュール内の関数で定義されているので、ここではグローバルを使うことはできません。この場合、関数に "master"を明示的に渡すことは、Pythonが真の "グローバル"名前空間を持たない(Pythonでは "global"は実際には "モジュールレベル"を意味する)ので、利用できるようにする唯一の方法です。

これはGoodThingです。これは、実際にプログラムを構築するための唯一の方法ですから。一般的なルールとして、グローバル(可変グローバル)は悪いです、彼らはあなたのコードを脆弱、untestable、unmaintainableと予測不可能にします。

0

は、引数としてそれを取るためにあなたの機能を更新し

+0

これを試しましたが、残念ながらうまくいきませんでした – OD1995

+0

誰かがここで "グローバル"がPythonで何を意味するのかを学ぶべきです。ヒント:Pythonには_no_グローバル名前空間があります。あなたが得ることができる最も「グローバル」は、モジュールの名前空間です。 –

関連する問題