美文网首页
Python 中的import 机制

Python 中的import 机制

作者: Dozing | 来源:发表于2019-02-18 21:54 被阅读1次

1.为什么要把import导入模块放在程序开头使用呢?

解释器在执行语句时,遵循作用域原则。因为这和作用域有关系,如果在顶层导入模块,此时它的作用域是全局的;如果在函数内部导入了模块,那它的作用域只是局部的,不能被其它函数使用。如果其它函数也要用到这个模块,还需要再次导入比较麻烦。

在用import语句导入模块时最好按照这样的顺序:

  • 1 python 标准库模块
  • 2 python 第三方模块
  • 3 自定义模块

2.绝对路径与相对路径

绝对路径就是文件的真正存在的路径,是指从硬盘的根目录(盘符)开始,进行一级级目录指向文件。
相对路径就是以当前文件为基准进行一级级目录指向被引用的资源文件。

以下是常用的表示当前目录和当前目录的父级目录的标识符

../ 表示当前文件所在的目录的上一级目录 
./ 表示当前文件所在的目录(可以省略) 
/ 表示当前站点的根目录(域名映射的硬盘目录)

3.循环导入/嵌套导入-import

循环导入

形如from moduleB import ClassB语句,根据Python内部import机制,执行细分步骤:

  1. 在sys.modules中查找 符号“moduleB”;
  2. 如果符号“moduleB”存在,则获得符号“moduleB”对应的module对象;
    从的 dict__中获得 符号“ClassB”对应的对象。如果“ClassB”不存在,则抛出异常“ImportError: cannot import name ‘classB’”
  3. 如果符号“moduleB”不存在,则创建一个新的 module对象。不过此时该新module对象的 dict 为空。然后执行moduleB.py文件中的语句,填充的 dict 。

总结:from moduleB import ClassB有两个过程,先from module,后import ClassB。

过程

当然将moduleA.py语句 from moduleB import ClassB改为:import moduleB,将在第二次执行moduleB.py语句from moduleA import ClassA时报错:ImportError: cannot import name ‘classA’

4.包(package)import

在一个文件下同时有 init .py文件、和其他模块文件时,该文件夹即看作一个包(package)。包的导入 和模块导入基本一致,只是导入包时,会执行这个 init .py,而不是模块中的语句。
而且,如果只是单纯地导入包【形如:import xxx】,而包的 init .py中有没有明确地的其他初始化操作,则:此包下的模块 是不会被自动导入的。当然该包是会成功导入的,并将包名称放入当前.py的Local命名空间中。

参考文章:
Python中import机制
Python 3.x可能是史上最详解的【导入(import)】
在Python中以绝对路径或者相对路径导入文件的方法
Python的模块引用和查找路径

相关文章

  • Python中import机制

    Python语言中import的使用很简单,直接使用import module_name语句导入即可。这里我主要写...

  • Python 中的import 机制

    1.为什么要把import导入模块放在程序开头使用呢? 解释器在执行语句时,遵循作用域原则。因为这和作用域有关系,...

  • python import机制

    最近遇到这么一个问题,就是分词的jieba在我的工程里面logging的level设置无效。于是乎,我就去翻阅是不...

  • Python 语法

    Python 中的import机制要注意python 引用部分数组的时候是前开后闭区间 random.randin...

  • Python的import机制

    package 和 module 概念 module 可以是一个py文件,一个pyd文件,dll文件,一个so文件...

  • Python的import机制

    Python程序中,import 语句导入一个新的模块供当前程序使用。import 的基本语法是 import m...

  • Python中import机制实用分析

    import 对于语句 import ,实际将module_...

  • Python小知识点

    Python的两种引入机制 Python 提供了二种引入机制: 1.relative import2.absolu...

  • Python源码剖析笔记5-模块机制

    python中经常用到模块,比如import xxx,from xxx import yyy这样子,里面的机制也是...

  • python之import机制

    1. 标准 import Python 中所有加载到内存的模块都放在 sys.modules 。当 import ...

网友评论

      本文标题:Python 中的import 机制

      本文链接:https://www.haomeiwen.com/subject/rjzzeqtx.html