包:
模块所在的包,创建一个包用于组织多个模块,包文件夹中必须创建一个名为’__init__.py’的文件,以将其识别为包,否则只能算作是一个普通的目录。在使用该包时,init自动执行。
包可以多层嵌套,以层级方式组织。
init方法可以是空文件,也可以用于初始化。
导入包中的模块:import package.module
例子:
test.py
package_runoob
|-- __init__.py
|-- module1.py
|-- module2.py
模块
模块就是包含python代码的文本文件,以py结尾。文件中可以包含类、函数、变量等。但是实际上狭义上应当把实现了具体功能的py文件视作模块。
导入模块:
1. import 模块名称
只能导入模块,不能导入函数、变量
2. import 模块名称 as 模块名称别名
3. form moduleName import *
可以导入模块、函数、变量
例如:
导入模块
from package1 import module1
导入变量
from package1.module1 import var3
导入函数 say_bye是函数名,注意不加括号和参数,只有名字
from package1.module1 import say_bye
导入类 Animal是类名
from package.module1 import Animal
但是,不能只导入类中的函数,却不导入类,如下错误:Dog是类,say_hi是其中函数
from package.module1 import Dog.say_hi
导入模块下所有内容:
from package.module1 import *
4. 导入时换行:使用关键字反斜线 \
from package1.module1 import var1,var2,var3,var4,var5,\
var6,var7
5. 相对导入和绝对导入
绝对导入:必须从顶级包开始,依次到指定导入内容。
相对导入:.表示当前目录,..上一级目录。
import不能使用相对导入,如import .package2.package4.m2。
入口文件不可以使用相对路径来导入模块,只能使用绝对路径。
python -m main.py 将入口文件当作一个模块执行,则可以使用相对路径导入模块。
6. 导入时的写法:
导入顺序是:标准库模块--第三方模块--自定义模块。
7. 一些项目中共用的需要导入的内容,可以放到包的init中导入
8. 导入时,搜索文件的顺序如下依次:
当前文件目录、环境变量 PYTHONPATH、sys.path(list 类型)
模块中类可以包含函数、变量。这样形成多个层级的组织形式。