1.什么是包
包是模块的一种形式,包就是一个含有__init__.py文件的文件夹
包是模块的一种形式,即包是用来被导入的,但包的本质就是一个文件夹(文件夹的作用就是用来存放文件的,包内所有的文件都是被导入使用的)
导包其实就是导__init__
核心搞清楚谁是执行文件,谁是被导入文件,确认执行文件下的环境变量。
但凡要导一个包,实质就是在导__init__下的包
导入方式:
1、绝对导入:相对与执行文件所在的文件夹(每次从包的根目录开始找,称之为绝对导入)
2、相对导入:相对于当前被导入的文件(只能用于模块直接的互相导入)
日志模块 logging
四种角色
logger 负责产生日志(可以设置日志级别)
filter 筛选日志
handler 接受logger对象传来的日志,控制输出到不同的位置(可以设置日志级别)
formatter:控制handler对象输入日志的格式
debug 10
info 20
warning 30
error 40
critical 50
=======================================================================
2.为什么要有包
3.如何用包
导入包就是在导包下的___init__.py
import...
from...import...
注意的问题:
1、包内所有的文件都是被导入使用的,而不是被直接运行的
2、包内部模块之间的导入可以使用绝对导入(以包的根目录为基准)与相对导入(以当前被导入的模块所在的目录为基准)
推荐使用相对导入
3、当文件是执行文件时,无法在该文件内用相对导入的语法
只有在文件时被当作模块导入时,该文件内才能使用相对导入的语法
4、凡是在导入时带点的,点的左边都必须是一个包-
import aaa
首次导入的模块发生三件事
1、创建一个包的名称空间
2、执行py文件,将执行过程中产生的名字存放于名称空间中 (即包名称空间中产生的名字都是来自于__init__.py)#__init__导包的执行文件
3、在当前执行文件中拿到一个名字aaa.aaa是指向包的名称空间的(aaa其实指的是__init__.py)
#导包就是导__init__
#一定要搞明白谁是执行文件,谁是被导入的文件 包下面有py文件但是下面所有的文件都不是右键运行的