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

相同点

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

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

    Python 3 中导入上级目录模块
    Python中模块导入之版本二与三的区别

    Python 2中 导入上级目录模块
    Python中模块导入之版本二与三的区别

不同点

  • 同级目录之间相互导入

    Python 2 中同级目录可以直接导入
    Python中模块导入之版本二与三的区别

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

    Python 3 不能直接导入同级目录,即使存在 init.py
    Python中模块导入之版本二与三的区别

    应该这样导入,从这两个模块的共同父亲开始
    Python中模块导入之版本二与三的区别

    即使没有 init.py 文件同样可以导入
    Python中模块导入之版本二与三的区别

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

    Python 3 不需要 init.py 只要一层一层的导入就行
    Python中模块导入之版本二与三的区别

    Python 2 则需要被导入的下级目录中的模块是在一个包中,即有 init.py
    Python中模块导入之版本二与三的区别
    加上 init.py 即可
    Python中模块导入之版本二与三的区别

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

import module

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

import package

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

相关文章:

  • 2022-12-23
  • 2021-11-23
  • 2021-12-14
  • 2021-04-05
  • 2022-12-23
猜你喜欢
  • 2021-07-13
  • 2021-05-07
  • 2021-08-11
  • 2021-05-21
  • 2021-08-10
  • 2022-12-23
相关资源
相似解决方案