I understand that python needs the __ init __.py file in order to recognize the directory as a python package, that way we can import sub modules into our program.I can see the similarity to classes and how init can be used to execute necessary code off the bat.
However, in the python docs, this line confuses me,
This is done to prevent directories with a common name, such as
string, from unintentionally hiding valid modules that occur later on
the module search path.
Could someone please clarify this?
解决方案
The documentation is very clear on this - your project structure could look like this:
app
- common
- init.py
- resources
- string
- src
If Python implicitly treated the directories as packages, the "string" directory could present a name clash with Python's built-in string module (https://docs.python.org/2/library/string.html). This means that when calling import string, the module is ambiguous.
__init__.py also adds a bit of functionality: code there is executed when initializing the package and can therefore be used to do package setup of some kind.