11モジュール、モジュールの検索順序、_file__組み込み属性、_name__ツールバーの
2306 ワード
モジュールの概念
pythonファイルはモジュールです.
モジュール名は識別子でもあり、識別子の命名規則に合致する必要があります.
モジュールで定義されたグローバル変数、関数、クラスは、外部から直接使用されるツールです.
モジュールはツールパッケージのようなもので、モジュールを使用するには、まずインポートする必要があります.
モジュールのインポート方法
モジュールがインポートされると、モジュールにはインデントされたコードがなく、完全に実行されます.
推奨方法
推奨されない方法
モジュールの別名
モジュールをインポートすると、モジュールに別名を付けることができ、別名はアルパカの命名規則に従います.
フォーマット:importモジュール名as別名
モジュールインポートの順序仕様
次の優先順位でインポート公式標準モジュール サードパーティモジュール アプリケーションモジュール 一部のツールのインポート(ローカルインポート)
モジュールにインポートするツール(グローバル変数、関数、クラス)の一部を指す場合は、一部のツールを使用してメソッドをインポートできます.
利点:モジュール名を使用することなく、インポートツールを直接使用できます.を使用して、モデルのすべての要素を選択します.
書式:from import
ツールの別名:
同じ名前のツールが2つインポートされている場合、最後にインポートされたものは前にインポートされたものを上書きします.この問題を解決するために、asキーワードを使用してインポートしたツールに別名を付けることもできます.
エイリアスは識別子命名規則に従います.
例:
form import*ですべてのツールをインポート(推奨しません!了解)
この方法でモジュールのすべてのツールを使用できますが、お勧めしません.
ツールの重複上書きには何のヒントもないため、問題のトラブルシューティングに不便です.
モジュールの読み込み順序 pythonシステムでは、randomモジュールなどのシステムモジュールを内蔵してユーザーが使用しやすい. モジュールをインポートするときは、現在のファイルディレクトリ、pythonシステムモジュールディレクトリの順に検索します. システムモジュールディレクトリが存在するため、モジュールに名前を付けるときは、システムモジュール名と同じではない.
__file__組み込み属性
使用:print(モジュール名._file_)モジュールが存在する絶対パスを出力できます.
直接print(_file_)の場合、現在のpythonファイルの絶対パスが出力されます.
__name__モジュールとコードブロックをテストする
テストブロック
開発では、通常、1つのモジュールにテストコードブロックが書かれており、これらのコードブロックは通常、テスト結果をコンソールに出力します.
モジュールをインポートすると、モジュールにインデントされたコードがなく、完全に実行されます.
しかし、1つのモジュールにとって、私たちはそのツールだけが必要で、そのテストコードがテスト結果をコンソールに出力する必要はありません.
この問題を解決するためには、__を使用する必要があります.name__組み込みプロパティ.
__name__
__name__属性はファイルのモジュール名を格納します.現在のモジュールで呼び出された呼び出しの値は、文字列「_main_」です.
でも!このモジュールが他のモジュールにインポートされた場合_name__プロパティの値は、呼び出されたモジュールの値です.
モジュールのインポート時にテストブロック出力の問題を解決する
利用_name__プロパティの特性は、if文を使用してこの問題を解決することができます.
インポートされたモジュールでif判定__を使用name__の値が「_main_」の場合(このモジュールでテストする場合)、ifでのテストコードを実行します.そうでなければ(インポートされる場合)、実行しません.
次のようになります.
pythonファイルはモジュールです.
モジュール名は識別子でもあり、識別子の命名規則に合致する必要があります.
モジュールで定義されたグローバル変数、関数、クラスは、外部から直接使用されるツールです.
モジュールはツールパッケージのようなもので、モジュールを使用するには、まずインポートする必要があります.
モジュールのインポート方法
モジュールがインポートされると、モジュールにはインデントされたコードがなく、完全に実行されます.
推奨方法
import 1
import 2
推奨されない方法
import 1, 2
モジュールの別名
モジュールをインポートすると、モジュールに別名を付けることができ、別名はアルパカの命名規則に従います.
フォーマット:importモジュール名as別名
モジュールインポートの順序仕様
次の優先順位でインポート
モジュールにインポートするツール(グローバル変数、関数、クラス)の一部を指す場合は、一部のツールを使用してメソッドをインポートできます.
利点:モジュール名を使用することなく、インポートツールを直接使用できます.を使用して、モデルのすべての要素を選択します.
書式:from import
ツールの別名:
同じ名前のツールが2つインポートされている場合、最後にインポートされたものは前にインポートされたものを上書きします.この問題を解決するために、asキーワードを使用してインポートしたツールに別名を付けることもできます.
エイリアスは識別子命名規則に従います.
例:
from xh_25_ 1 import module_name as tools1
form import*ですべてのツールをインポート(推奨しません!了解)
この方法でモジュールのすべてのツールを使用できますが、お勧めしません.
ツールの重複上書きには何のヒントもないため、問題のトラブルシューティングに不便です.
モジュールの読み込み順序
__file__組み込み属性
使用:print(モジュール名._file_)モジュールが存在する絶対パスを出力できます.
直接print(_file_)の場合、現在のpythonファイルの絶対パスが出力されます.
__name__モジュールとコードブロックをテストする
テストブロック
開発では、通常、1つのモジュールにテストコードブロックが書かれており、これらのコードブロックは通常、テスト結果をコンソールに出力します.
モジュールをインポートすると、モジュールにインデントされたコードがなく、完全に実行されます.
しかし、1つのモジュールにとって、私たちはそのツールだけが必要で、そのテストコードがテスト結果をコンソールに出力する必要はありません.
この問題を解決するためには、__を使用する必要があります.name__組み込みプロパティ.
__name__
__name__属性はファイルのモジュール名を格納します.現在のモジュールで呼び出された呼び出しの値は、文字列「_main_」です.
でも!このモジュールが他のモジュールにインポートされた場合_name__プロパティの値は、呼び出されたモジュールの値です.
モジュールのインポート時にテストブロック出力の問題を解決する
利用_name__プロパティの特性は、if文を使用してこの問題を解決することができます.
インポートされたモジュールでif判定__を使用name__の値が「_main_」の場合(このモジュールでテストする場合)、ifでのテストコードを実行します.そうでなければ(インポートされる場合)、実行しません.
次のようになります.
if __name__ == "__main__":
"""if , """
print(" ")