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