Python入门课程NO78课 模块的绝对导入和相对导入
模块的导入分两种,绝对导入和相对导入。下面分别来讲解:
绝对导入:
模块的绝对导入是指从当前顶层的package位置处开始导入。这里涉及到一个概念:顶层package。
在上文的目录结构中,main.py与utils处于同一目录,utils是最顶层的包,utils下面的arithmetic是子级的包。在main.py中需要导入arithmetic包中的add模块时,则当前顶层的package是utils,使用绝对导入的语法为:from utils.arithmetic import add。表示从utils包下面的arithmetic包中导出add模块。而在calc_max.py中需要导入arithmetic包中的add模块时,当前顶层的package就是arithmetic, 使用绝对导入的语法为:from arithmetic import add。
相对导入:
模块的相对导入是指在package内部,相对于当前位置进行导入。在相对导入语法中需要使用前缀点号.。单个点号.表示当前目录,两个点号..表示父目录,三个点号...表示父目录的父目录,以此类推。点号可以加在名称前面,例如.A表示当前目录中的A目录或A模块,..B表示父目录中的B目录或B模块。
因此,在上图中,在calc_max.py中导入arithmetic中的add模块的写法应该是from .arithmetic import add,表示在当前目录中的arithmetic包中导出add模块。
值得注意的是,在进行相对导入时不能超出当前package的顶层作用域,否则会抛出ValueError的异常,指示超出了顶层package的作用域。
Python中的默认导入方式为绝对导入,因为其句法清晰,直接,企业开发中也通常将绝对导入作为首选
- 上一篇
Python入门课程NO77课 package是什么
package,即通常所说的包结构,是一种包裹模块文件的目录结构。通俗地来进行解释,package是一个模块仓库。可以通俗的理解为一个目录文件夹就是一个package,比如下图中的Lib和pip都是package。package也是对象,可以理解为一种命名空间对象。Python中的类有一个特殊的__init
- 下一篇
Python入门课程NO79课 Python常用的标准库
为了开发者使用方便,python内置了一些模块。这些叫python的常用做标准库。其中包括系统相关模块,时间处理模块,随机数模块,命令行模块。使用这些标准模块时,无需安装,直接使用import语句进行导入。同学们可以简单记忆一下,在需要使用的时候知道有他的存在,并直接导入使