Python中模块导入之版本二与三的区别

本文探讨Python 2与3中模块导入的差异。在相同点上,两者下级目录都能直接导入上级模块。不同点在于Python 2允许同级目录直接导入,而Python 3则需要从共同父目录导入。Python 3弱化了init.py的作用,但上级导入下级仍需逐级导入。import module是执行模块文件,import package则是执行包的init.py文件。

事先声明,这些乃是本人学习 Python 目录规范时碰到了问题,然后通过不断尝试出来的,这里做了一个总结,仅供大家参考,如有错误欢迎指正,我是在 Ubuntu 上用 pycharm 试,并不能保证 Windows 下同样适用(而且,shell 中和pycharm中不同,不知道为啥)。

相同点

没有相同之处,何来不同之分;聊区别之前,先看一下相同的部分。

  • 下级目录导入上级目录中的模块,可以直接导入,如图

    Python 3 中导入上级目录模块
    Python3

    Python 2中 导入上级目录模块
    Python2

不同点

  • 同级目录之间相互导入

    Python 2 中同级目录可以直接导入
    Python2

    但如果加了 init.py 文件可以让导入时 pycharm 识别到这个模块,会有导入的提示

    Python 3 不能直接导入同级目录,即使存在 init.py
    python3

    应该这样导入,从这两个模块的共同父亲开始
    Python3

    即使没有 init.py 文件同样可以导入
    Python3

  • 上级目录,导入下级目录中的模块

    Python 3 不需要 init.py 只要一层一层的导入就行
    Python3

    Python 2 则需要被导入的下级目录中的模块是在一个包中,即有 init.py
    这里写图片描述
    加上 init.py 即可
    Python2

总结:就是版本3 中弱化的 init.py 的作用,但如果上级目录需要导入下级目录的模块,需要一层层的导入。

import module

其实就是将 module.py 文件解释执行,并赋给了 module 这个变量,如果我们需要调用 module.py 中写好的某个函数,可以直接调用 module.func(),

import package

其实就是执行了 package 下的 init.py 文件,这个可以很简单的尝试,只需要在 init.py 文件中加上一条 print 语句,再在某个模块中导入这个包,就会发现,会执行 print 语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值