1、包就是一个文件夹
当我们导入一个包的时候,默认执行这个包内的__init__.py文件
在python2中必须写__init__.py文件,python3中可以不写,但是最好也写上
代码的结构:
一条语句 --> 语句块 -->代码块(函数,类)-->py文件(模块) -->包
2、相对导入和绝对导入
相对导入:相对于当前模块所在的包,使用的时候必须在包外启动 一个点 . 表示当前位置,点点 .. 表示上一级目录
绝对导入:根据包的根目录去导入内容
不管是绝对路径还是相对路径,导入时查找的路径都是依据 sys.path
##包的注意事项:
1. 关于包相关的导入语句也分为import和from xxx import xxx两种,但无论使用哪种, 无论在什么位置,在导入时都必须遵循一个原则: 凡是在导入时带点的, 点左边都必须是一 个包,否则报错。可以带一连串的点。比如a.b.c
2. import导入文件时,产生名称空间中的名字来源于文件, import 导包时, 产生的名称空间的名字同样来源于文件,即包下的__init__,py, 导入包本质就是在导入该文件。
3. 包A和包B下有同名模块也不会冲突,如A.a和B.a来自两个名称空间