math数値データを含むという名前のディレクトリを含むプロジェクトがあるとします。no__init__.pyが必要な場合import mathは、実際のmathモジュールの代わりにそのディレクトリをインポートしようとします。しかし、ディレクトリには実際の Python コードではなくデータが含まれているだけなので、インポートは失敗します。したがって、ディレクトリに Python コードがまったく含まれていなくても、ディレクトリは標準ライブラリからmath実際のモジュールをインポートすることをブロックします。mathmath
これ__init__.pyは確認のようなもので、ディレクトリは「はい、私は本当にPythonパッケージであり、単なるファイルでいっぱいのディレクトリではありません。私をインポートするのは理にかなっています.」と言っています。Python はインポートできないことを認識しているため、この方法で自分自身を "アナウンス" しないディレクトリはスキップされます。Python 標準ライブラリには、多くの一般的な名前 (os、math、time、symbol、resource など) を持つモジュールがあるため、これは良いことです。この要件がなければ、Python パス上のどの__init__.pyディレクトリにもこれらの名前を使用することはできません。Python に関係のないデータやファイルを格納することさえできません。
stringこの場合、実際には最良の例ではありません。と呼ばれるモジュールがありますがstring、その関数のほとんどが型のメソッドとして利用できるため、最近ではあまり役に立ちませんstr。しかし、前述したように、一般的な名前のモジュールは他にもたくさんあります。