python包的相对导入的一些个人看法

最近在学python,看到了包的导入部分,绝对导入还好,相对导入搞得人脑袋发晕看不明白,所以费了一番功夫去查资料,然后在这里分享一些个人心得,如果有误还请见谅,本人虚心接受来自各位“看官”的批评指正。当然,如果本人解释还能入得了各位“看官”的法眼,麻烦点赞、关注、收藏,支持一下!

在正式开讲之前,需要先对一些重点事项进行说明:

一、入口文件是什么?——按照定义,入口文件是指__name__=’__main__’的文件,可能这么讲小伙伴们可能还不甚理解,但是没关系,下面会举例说明

二、包的相对导入规则是什么?

1、相对导入只能只用from XXX import XXX

2、入口文件中不能使用相对导入!!!(这点一定要牢记!!!)

3、"."表示当前目录,“..”表示上级目录,“...”表示上上级目录

现在进入举例环节

先给出文件的结构关系,以及各个文件中具体的代码

文件的结构关系如下:

其中后缀为.py的文件是“模块文件”,含有__init__.py的文件夹是“包”

并且,由上图可知,package1(包)和test.py(模块文件)位于同一级目录,package1(包)含有三个“模块文件”

各文件中具体的代码如下:

__init__.py为空文件夹,当然,想写点代码进去也行,但是对package1(包)中的文件进行导入时会先自动执行一遍__init__.py文件的代码

tets1.py文件的内容如下:

test2.py文件的内容如下:

 入口文件举例说明

比如说,我在编辑器(pycharm这些软件)中对上图中的test2.py点击运行,那么test2.py就是入口文件,如果在编辑器中对test.py点击运行,那么test.py就是入口文件

相对导入规则2(入口文件中不能使用相对导入)举例说明

比如说在test.py文件中写入代码“from . import test2”,并对test.py文件点击“运行”按钮,则会显示如下报错,此时test.py是入口文件:

 但是如果将test.py文件中的运行代码改成“from package1 import test2”代码就会顺利运行

同理,test2.py文件中的具体代码上面已经给出,从中不难发现,test2.py文件中含有相对导入,那么如果此时在编辑器中对test2.py点击“运行”,必然会报错,因为此时test2.py是入口文件

相对导入具体格式说明

由上文中的规则3中可知"."表示当前目录,“..”表示上级目录,“...”表示上上级目录,以此文给出的文件结构进行举例:

在test2.py中编写代码,具体代码及含义如下

from . import test1表示将当前目录下(test2.py所在目录)的test1.py文件导入到test2.py文件中

from .test1 import a表示将当前目录下(test2.py所在目录)的test1.py中的函数a导入到test2.py文件中

对于仅使用“.”和“.+文件名”两种形式的区别大家一定要通过上面举的例子细品!!!

因为很多小伙伴在使用可能会写成:from .test2 improt test1这种形式,这是错的,一定要注意注意再注意!!!

  • 17
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值