标签:__init__ lan 直接 无法 包名 子模块 bubuko 结果 python
包是一种通过‘.模块名‘来组织python名称空间的方式
通俗的开讲: 包就是一个具有__init__.py文件的文件夹,所以创建包的意义就是用一个文件将文件/模块组织起来
强调:
1),在python3中,即是包下没有__init__.py文件,import包仍然不会报错,而在python2中,包下一定要有__init__.py文件,否则import包就会报错
2), 创建包的目的不是为了运行,而是被导入使用,包只是模块的一种形式,包的本质就是一种模块
包的本质就是一个文件夹,那么文件夹唯一的功能就是将文件组织起来. 随着功能越写越多,我们无法将所有功能都放到一个文件中,于是我们使用模块去组织功能,而随着模块越来越多,我们就需要用文件夹将模块文件组织起来,以此来提高程序的结构性和可维护性
单独导入包名称时不会导入包中所有包含的所有子模块
#在与glance同级的test.py中 import glance glance.cmd.manage.main() ‘‘‘ 执行结果: AttributeError: module ‘glance‘ has no attribute ‘cmd‘ ‘‘‘
需要注意的是from后import导入的模块,必须是明确的一个不能带点,否则会有语法错误
绝对导入: 以执行文件的sys.path为起始点开始导入,称之为绝对导入
优点: 执行文件与被导入的模块中都可以使用
缺点: 所有导入都是以sys.path为起始点,导入麻烦
相对导入: 参照当前所在文件的文件夹为起始开始查找,称之为相对导入
符号: . (一个点)代表当前所在文件的文件夹, ..(两个点)代表上一级文件夹, ...(三个点)代表上一级的上一级文件夹
优点: 导入更加简单
缺点: 只能在导入包中的模块时才能使用
注意: 1),相对导入只能用于包内部模块之间的相互导入,导入者与被导入者都必须存在于一个包内
2), 试图在顶级包之外使用相对导入是错误的,言外之意,必须在顶级包内使用相对导入,每增加一个,代表调到上一级文件夹,而上一级不应该超出定级包.
标签:__init__ lan 直接 无法 包名 子模块 bubuko 结果 python
原文地址:https://www.cnblogs.com/kp1995/p/10072601.html