1.0模块,包
1.1module and package
-
包:包是通过使用’.模块名’来组织python模块名称空间的方式。
-
—具体而言,包就是一个包含
__init__.py
文件的文件夹。 -
目的:用文件将文件/模块组织起来。
-
注意:py3,即使包中没有
__init__.py
也可使用; -
py2,如果没有
__init__.py
肯定报错。
1.2创建包的目的:
-
不是为了运行,而是为了被导入使用。
-
包的本质还是模块
1.3使用时
- import导入,导入带点的,点的最左边一定是包名。
- import 导入文件时,产生名称空间的名字源于文件,import 包,名称空间同样源于文件(包),
__init__.py
,导入包的本质导入它。
import school.cmd.manage
school.cmd.manage.main()
import school.api.students
school.api.students.get()
➜ school tree
.
├── api
│ ├── __init__.py
│ ├── students.py
│ └── versions.py
├── cmd
│ ├── __init__.py
│ └── manage.py
├── db
│ ├── __init__.py
│ └── models.py
└── __init__.py
import school
school.api.students.get()
#报错
school下的__init__.py添加from.import api
再在api下的__init__.py添加from.import students
即可以运行
-
from … import…时,import 后导入的模块,必须是一个不包含(.),否则报错
-
在school/api/versions.py中导入school/cmd/manage.py
#在school/api/versions.py中
from school.cmd import manage#绝对导入
manage.main()
from..cmd import manage