python入门须知:包、模块、库的含义、导入、 | 您所在的位置:网站首页 › 模块与库的区别在哪 › python入门须知:包、模块、库的含义、导入、 |
概念
包:(Package) 包:是一个有层级的目录结构,包含n个模块或者n个子包,包中一定要有__init__.py文件,所以包只是一个组织方式,更加有条理,并不是必须的。 模块:(Module) 模块:是一个单独的.py文件,用于存放一些功能相关的代码,所以当然是应用实现的核心。 库:(Library) 库:是完成一个“大"功能的代码集合,表现形式通常是包。 三者的关系: 库可以是包的集合或者模块的集合,最主要是完成一个整体应用,侧重功能的完整性。 包是库的组织形式,使得在开发一个库的时候,如果有一些模块功能紧密相关,那么就放在一个包里,由于有很多模块,那么按照功能差异,可能会分给很多个包。最终,形成一个库。 模块:是一个单独的.py文件,用于实现一个小功能。 导入在python中,一个包是一个带有特殊文件__init__.py的目录。__init__.py文件定义了包的属性和方法。 不过,它可以什么也不定义,可以只是一个空文件,但是必须存在。如果 __init__.py不存在,这个目录就仅仅是一个目录,而不是一个包,因此它就不能被import导入。 其实,我们在导入一个包时,实际上导入了它的__init__.py文件。 导入包: import 包导入模块: 1.import 包.模块 2.from 包 import 模块注意:直接导入一个包,由于只是执行包中的__init__.py文件的内容,所以如果该文件为空,则不会导入任何包中的模块。所以我们有时会在__init__.py文件中对需要的模块进行导入,什么意思?下面给出了一篇文章,不但介绍了__init__.py文件的作用,也介绍了__all__的含义,由于已经写得很好也很精简,所以我就没有重写,直接搬运了:https://blog.csdn.net/guowujun321/article/details/80764468,大家可以支持原作者。 搬运开始1、在使用PyCharm新建python package时,会发现生成的包里,有__init__.py 这个文件,而且这文件是空的。 既然是空的?那删了吧! 删了就悲剧咯,这货算是package的一个标识,IDE就是通过它来判断package的。 当然,它还有另外一个作用,暂且不提它,先说说__all__。 2、Python中的包和模块有两种导入方式:精确导入和模糊导入 以上图为例,精准导入,假如A.py里有函数A1(),A2()。 此时B.py需要引用它们,可以如下: from hello.A import A1,A2假如方法比较多,或许会偷懒,用模糊导入: from hello.A import *而__all__,则可以控制*所表示要引入的东西(模块,函数,类等): 如果将__all__里的sayA2去掉,B.py里就会报sayA2查找不到的错误。 3、__init__.py的用法: 当然__all__也可以在__init__.py里声明,__init__.py是上图hello目录下的,可以理解为,该目录下py文件的函数都统一到__init__.py来声明 此时B.py里只是引入hello目录,并未精准到py文件。 搬运结束参考资料: https://blog.csdn.net/li_101357/article/details/52923828 https://blog.csdn.net/zx870121209/article/details/81515649 https://blog.csdn.net/guowujun321/article/details/80764468 |
CopyRight 2018-2019 实验室设备网 版权所有 |