Python のモジュール データはどこから来たのですか? まず知っておく必要があるのは、Python がこのパッケージ モジュールをどのように見つけるかということです。次に、名前空間の概念をより深く理解していれば、Python のモジュール データがどこから来たのかを知ることができます。
検索パス
モジュールをインポートすると、Python パーサーは次の順序でモジュールの場所を検索します。
1. 現在のディレクトリ
2. 現在のディレクトリにない場合、Python はシェル変数 PYTHONPATH の下にあるすべてのディレクトリを検索します。
3. どちらも見つからない場合、Python はデフォルトのパスをチェックします。 UNIX では、通常、デフォルトのパスは /usr/local/lib/python/ です。
モジュール検索パスは、システム モジュールの sys.path 変数に保存されます。変数には、現在のディレクトリ、PYTHONPATH、およびインストール プロセスによって決定されるデフォルトのディレクトリが含まれます。
名前空間とスコープ
変数は、一致するオブジェクトを保持する名前 (識別子) です。名前空間は、変数名 (キー) とそれに対応するオブジェクト (値) を含む辞書です。
Python 式は、ローカル名前空間とグローバル名前空間の変数にアクセスできます。ローカル変数がグローバル変数と同じ名前を持つ場合、ローカル変数はグローバル変数をオーバーライドします。
各関数には独自の名前空間があります。クラスメソッドのスコープ規則は、通常の関数の場合と同じです。
Python は、関数内で割り当てられた変数がローカルであると仮定して、変数がローカルであるかグローバルであるかをインテリジェントに推測します。
したがって、関数内のグローバル変数に値を代入する場合は、global ステートメントを使用する必要があります。
グローバル VarName の式は、VarName がグローバル変数であることを Python に伝えるため、Python はローカル名前空間でこの変数を検索しません。
たとえば、変数 Money をグローバル名前空間に定義します。次に、関数内の変数 Money に値を代入すると、Python は Money がローカル変数であると想定します。ただし、アクセスする前にローカル変数 Money を宣言していないため、結果は UnboundLocalError になります。この問題は、グローバル ステートメントの前のコメントをキャンセルすることで解決できます。
rree
以上がPython モジュールのデータはどこから来るのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。