[root@3dzfiejazf a]# ls
b
[root@3dzfiejazf a]# touch b.py
[root@3dzfiejazf a]# python35
Python 3.5.1 (default, Jan 23 2016, 19:40:20)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import b
>>> b
<module 'b' from '/root/python3/a/b.py'>
>>> quit()
[root@3dzfiejazf a]# touch b/__init__.py
[root@3dzfiejazf a]# python35
Python 3.5.1 (default, Jan 23 2016, 19:40:20)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import b
>>> b
<module 'b' from '/root/python3/a/b/__init__.py'>
萌13131313
关于
__init__.py
有些疑问。@廖雪峰廖老师文中说目录中必须有
__init__.py
文件,否则该目录就不是包。但是个人觉得包和目录在Python中没有区别,__init__.py
目的是提供特定的作用,需要时创建即可。例如:导入空目录a,a目录是一个名称空间,
__package__
属性时记录的是a自身:在a目录中添加了
__init__.py
文件后,a目录就变成了__init__.py
模块,__package__
属性仍然记录的自身:所以从这里觉得对于python而言包和目录没有区别,都是名称空间。
__init__.py
则是是特定场景使用,例如:用来初始化包名称空间:
或者当具有
同名的模块
时,优先导入该包:所以我觉得如果压根用不到
__init__.py
提供的特性,根本就不用创建__init__.py
文件。