极客小将

您现在的位置是:首页 » 原创课程 » Python

课程内容

Python入门课程NO78课 模块的绝对导入和相对导入

极客小将2020-09-08-
模块的导入分两种,绝对导入和相对导入。下面分别来讲解:绝对导入:模块的绝对导入是指从当前顶层的package位置处开始导入。这里涉及到一个概念:顶层package。在上文的目录结构中,main.py与utils处于同一目录,utils是最顶层的包,utils下面的arithmetic是子级的包。在mai

模块的导入分两种,绝对导入和相对导入。下面分别来讲解:

绝对导入:

模块的绝对导入是指从当前顶层的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中的默认导入方式为绝对导入,因为其句法清晰,直接,企业开发中也通常将绝对导入作为首选

预约试听课

已有385人预约都是免费的,你也试试吧...