【今日学习】
1.包的介绍
1.1 什么是包:包就是一个包含有__init__.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来。
1.2 为什么要使用包:
包的本质就是一个文件夹,那么文件夹唯一的功能就是将文件组织起来,随着功能越写越多,我们无法将所以功能都放到一个文件中,于是我们使用模块去组织功能,而随着模块越来越多,我们就需要用文件夹将模块文件组织起来,以此来提高程序的结构性和可维护性
1.3注意事项:
①.关于包相关的导入语句也分为import和from ... import ...两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:凡是在导入时带点的,点的左边都必须是一个包,否则非法。可以带有一连串的点,如item.subitem.subsubitem,但都必须遵循这个原则。但对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。
②import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件
③包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间
2.包的使用
2.1包的使用之import
①单独导入包名称时不会导入包中所有包含的所有子模块
②需要注意的是from后import导入的模块,必须是明确的一个不能带点,否则会有语法错误,如:from a import b.c是错误语法
3.绝对导入与相对导入
相对导入的存在是为了可以在修改路径名时,不会改变调用取值路径,所以用相对导入法。
. 执行代码或模块 ,代表上一级
.. 执行代码或模块,代表上上一级
4.内置模块
内置模块是可以直接调用,不用考虑在哪个文件夹下,记住一些常用的模块名,以方便调用。
【今日领悟】
1.在包内调用模块时,一定记住在—init—.py文件中导入模块,导入模块时注意导入路径要在调用模块所在的文件夹去寻找
2.import 后面一定是可执行的文件,import 包 ,其实质用——init——代替包去执行,所以需要把包内模块导入——init——.py文件中。