Python进阶之import导入机制原理详解

yizhihongxing

Python进阶之import导入机制原理详解

简介

在 Python 中,我们经常需要导入其他模块中的代码以完成各种任务。Python 的 import 机制是实现这一功能的重要手段,可谓是 Python 中非常重要的一部分。通过本篇文章,我们将会具体讲解 Python 的 import 机制原理。

Python import 的分类

Python 中的 import 机制主要可以分为以下几类:

绝对路径导入

当我们想要从 Python 模块搜索路径中直接导入某个模块时,这样的 import 就被称为绝对路径导入。例如:

import module1
from package1 import module2

上述代码中,module1module2 都是绝对路径导入。

相对路径导入

当我们需要从相对路径中导入模块时,我们可以使用相对路径导入。常用的相对路径导入有两类:

  • 单点相对导入:以单个句点(.)开头表示当前包中的模块。例如 from .module1 import func1
  • 双点相对导入:以双个句点(..)开头表示当前模块的父包中的模块。例如 from ..module1 import func1

动态导入

如果我们不确定需要导入哪个模块,可以使用动态导入。例如:

module_name = "module1"
module1 = __import__(module_name)

上述代码中,我们动态地计算出需要导入的模块名 module_name,并使用 Python 自带的 __import__ 函数动态地导入了模块 module1

Python import 的搜索路径

在 Python 中,模块有一个搜索路径列表,Python 会根据这个列表来搜索需要导入的模块。

搜索路径列表的顺序是:

  1. 程序的主目录(即主程序所在的目录)。
  2. 环境变量 PYTHONPATH 包含的所有目录。PYTHONPATH 中的每个目录都将被添加到搜索路径中。
  3. 标准库所在目录。
  4. 任何 .pth 文件中所列出的目录。
  5. 默认情况下,Python 安装后自带的一些目录。

我们可以使用 Python 的 sys.path 属性来查看搜索路径列表。例如:

import sys
print(sys.path)

Python import 的执行流程

Python 的 import 语句实际上是一个复合语句,它包括两个步骤:

  1. 搜索模块。
  2. 将搜索到的模块载入内存,并将其指定给变量。

搜索模块的过程实际上就是 Python 从搜索路径列表中找到需要导入的模块的过程,Python 内部使用了一个名为 __import__() 的函数来实现这个过程。

具体来说,__import__() 函数会根据导入的模块名逐级向下搜索,直到找到所需的模块或者抛出未找到模块异常 ModuleNotFoundError 为止。

在找到所需的模块之后,Python 会执行这些模块中的代码并将其中的对象放入内存中。这些对象包括模块级别的属性、函数、类等。当运行到 import 语句时,这些对象会被加载到 Python 的内存中,并将其指定给对应的变量。

示例说明

我们通过两个示例来说明 Python 的 import 机制。

示例 1:绝对路径导入

假设我们有以下目录结构:

project/
├── main.py
├── module1.py
└── package1/
    ├── module2.py
    └── __init__.py

module1.py 中定义了一个函数 func1()module2.py 中也定义了一个函数 func2()。我们希望在 main.py 中使用这两个函数。我们可以使用如下的 import 语句:

import module1
from package1 import module2

# 调用 func1()
module1.func1()

# 调用 func2()
module2.func2()

上述代码中,module1module2 都是绝对路径导入。

示例 2:相对路径导入

如果我们希望在 module2.py 中使用 module1.py 中定义的函数,我们可以使用相对路径导入。例如:

# module2.py
from ..module1 import func1

def func2():
    func1()

上述代码中,我们使用双点相对导入来导入位于 module1.py 文件中的 func1() 函数。

结论

综上所述,Python 的 import 机制是 Python 中非常重要的一部分。它包括了不同种类的 import 语句,有多种不同的搜索路径,并执行了两个步骤:搜索模块和载入模块。在实际的 Python 开发过程中,我们应当清楚地了解这些内容并加以应用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python进阶之import导入机制原理详解 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 【manim动画教程】–目录(完结)

    manim是一个生成数学教学视频的动画引擎。它用编程的方式创建精美的数学动画,让数学更加易懂。 本教程简单介绍了 manim 的基本使用方式,基于 v0.17.2 版本 manim 安装 manim是基于python语言开发的开源框架,是由 3blue1brown 开发的。 本来是他们自己用来制作数学视频用的,因为其友好的API和漂亮的UI效果,在开源之后,…

    python 2023年4月22日
    00
  • python开发中两个list之间传值示例

    以下是详细讲解“Python开发中两个List之间传值示例”的完整攻略。 在Python开发中,有时需要将一个List的值传递给另一个List。本文将介绍两种方法来实现这个目标,并提供两个示例说明。 方法一:使用切片 可以使用切片来将一个List的值传递给另一个List。例如: lst1 = [1, 2, 3] lst2 = lst1[:] print(ls…

    python 2023年5月13日
    00
  • 使用Python进行数独求解详解(二)

    使用Python进行数独求解详解(二) 本文将继续介绍如何使用Python进行数独求解。我们将介绍如何使用回溯算法和剪枝技巧来提高求解效率。同时,我们提供两个示例,分别演如何使用Python求解简单和困难的数独谜题。 回溯算法和剪枝技巧 回溯算法是一种通过尝试所有可能的解来求解问题的算法。在数独求解中,回溯算法可以通过递归地尝试每个空格的可能来求解数独谜题。…

    python 2023年5月14日
    00
  • CentOS 6.5中安装Python 3.6.2的方法步骤

    下面是CentOS 6.5中安装Python 3.6.2的方法步骤: 1. 下载Python 3.6.2源码包 首先,需要进入Python官网下载Python 3.6.2的源码包,可以使用以下命令直接下载: $ wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz 2. 安装编译工具 为了…

    python 2023年5月20日
    00
  • 基于MATLAB和Python实现MFCC特征参数提取

    首先,MFCC(Mel-frequency cepstral coefficients)特征参数是语音信号分析中常用的语音特征参数之一,用于语音识别、说话人识别等领域。而MATLAB和Python都是常用的语音信号处理工具。因此,对于需要进行语音信号处理的人来说,学会如何用MATLAB和Python实现MFCC特征参数提取非常有必要。 下面是基于MATLAB…

    python 2023年5月19日
    00
  • python自动统计zabbix系统监控覆盖率的示例代码

    下面我将为您详细讲解如何实现Python自动统计Zabbix系统监控覆盖率的示例代码攻略。 1. 准备工作 在开始实现之前,需要进行以下准备工作: 搭建Zabbix监控系统并添加监控项、触发器等; 安装Python,并搭建Python Web框架,如Django; 安装Python库zabbix-api(可通过 pip install zabbix-api …

    python 2023年6月3日
    00
  • Django的基本运用之Django垃圾分类详解

    Django是一个流行的Python Web框架,它可以帮助我们快速构建Web应用程序。本文将详细讲解如何使用Django实现垃圾分类Web应用程序。 安装Django 在使用Django之前,我们需要先安装它。可以使用以下命令来安装Django: pip install Django 创建Django项目 在安装Django之后,我们可以使用以下命令来创建…

    python 2023年5月15日
    00
  • Python升级导致yum、pip报错的解决方法

    Python升级导致yum、pip报错的解决方法 在Python升级后,可能会导致yum、pip等工具报错,这是由于Python版本更新后,相关依赖库没有及时更新导致的。本攻将提供解决Python升级导致yum、pip报错的完整攻略,包括更新依赖库、重新安装工具等方法,并提两个示例。 解决方法 以下是解决Python升级导致yum、pip报错的常用方法: 更…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部