バッグ
パッケージ、実際、上記の例のいくつかでは、異なるパッケージ名が作成されています。詳細を注意深く観察してください。冒頭のモジュールの紹介でも述べたように、モジュールを使用すると関数名と変数名の衝突を避けることができます。同じ名前の関数や変数は異なるモジュールに存在することができるため、自分でモジュールを作成する場合、他のモジュールと名前が競合することを考慮する必要はありません。ただし、組み込み関数名と競合しないように注意してください。しかし、ここにも問題があり、異なる人が書いたモジュール名が同じだった場合はどうなるでしょうか。モジュール名の競合を避けるために、Python では、パッケージと呼ばれるディレクトリごとにモジュールを編成する方法が導入されました。
たとえば、最初の例ではパッケージを導入していますが、このように同じモジュール名があっても、実際にはパッケージ名が異なるとパスが異なるため、重複することはありません。以下に示すように、パッケージ名が導入された後、lname.py は実際には com.Learn.module.nameattributes.lname
注意深く観察すると、基本的にすべての要素が存在することがわかります。パッケージ ディレクトリの下に __init__.py ファイルが作成されます。なぜですか?
このファイルは必須であるため、そうでない場合、Python はこのディレクトリをパッケージではなく通常のディレクトリとして扱います。 __init__.py 自体はモジュールであり、対応するモジュール名がパッケージ名であるため、__init__.py は空のファイルにすることも、Python コードを含めることもできます。