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

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日

相关文章

  • Python深度学习实战PyQt5安装与环境配置过程详解

    Python深度学习实战PyQt5安装与环境配置过程详解 简介 本篇文章旨在介绍Python深度学习实战PyQt5的安装过程和环境配置,使读者在学习这门技术时少走弯路。 安装Python 首先,我们需要安装Python。Python是一种高级编程语言。在安装Python之前,需要确定你的计算机是否已安装Python,如果没有,你需要在Python的官网(ht…

    python 2023年5月14日
    00
  • Python编程利用科赫曲线实现三维飘雪效果示例过程

    首先,需要明确一下科赫曲线和三维飘雪效果的概念。 科赫曲线是一种无限迭代的分形曲线,是由简单的线段不断缩放、旋转和复制形成的,具有自相似和自同构的性质。它可以用递归函数实现,是非常具有美感和趣味性的数学曲线。 三维飘雪效果是指将二维的雪花动画效果转化为三维的立体效果,通过模拟雪花在空中的运动和旋转,使整个效果更加逼真和有趣。 现在,我们来详细讲解一下如何利用…

    python 2023年5月19日
    00
  • 查找NumPy数组中一个序列的出现次数

    查找NumPy数组中一个序列的出现次数可以通过NumPy包中的函数来实现。具体步骤如下: 导入NumPy包 import numpy as np 创建一个NumPy数组 a = np.array([1, 2, 3, 4, 5, 2, 3, 1, 2]) 创建一个要查找的序列 seq = np.array([1, 2]) 使用NumPy包中的frombuffe…

    python-answer 2023年3月25日
    00
  • Python实现动态条形图绘制的示例代码

    下面我来给你讲解一下“Python实现动态条形图绘制的示例代码”的完整攻略。 一、背景介绍 Python是一种高级编程语言,一直以来都是数据科学和机器学习领域最受欢迎的语言之一,因为Python有着强大的数据处理和可视化能力。在数据分析的过程中,我们往往需要将数据可视化,特别是通过交互式可视化来更好地展示数据,动态条形图便是一种常见的交互式可视化。 二、实现…

    python 2023年6月3日
    00
  • 使用python批量修改XML文件中图像的depth值

    下面是使用Python批量修改XML文件中图像的depth值的完整攻略。姑且认为本文中的XML文件类型是VOC格式(即PASCAL VOC格式)。 一、问题描述 图像的depth值是指一张图片的颜色位深(即每个像素占用多少位)。在VOC格式的XML文件中,depth值用来描述图片的颜色位深。但是,在实际操作中,我们可能需要对一组图片的depth值进行批量修改…

    python 2023年6月3日
    00
  • 关于Python 解决Python3.9 pandas.read

    在Python3.9版本中,使用pandas.read_csv()函数读取csv文件时,可能会出现以下错误: AttributeError: module ‘pandas’ has no attribute ‘read_csv’ 这是因为在Python3.9版本中,pandas.read_csv()函数已经被弃用,取而代之的是pandas.read_csv(…

    python 2023年5月13日
    00
  • Python中的logging模块实现日志打印

    Python中的logging模块是一个强大的日志记录工具,可以非常方便地实现日志的打印、控制日志级别、设置日志输出格式等功能。下面是一个完整的实现攻略: 1. 导入logging模块 在Python中,我们需要先导入logging模块才能对其进行调用。我们可以使用import logging语句将其导入。 import logging 2. 配置loggi…

    python 2023年6月5日
    00
  • 解决python便携版无法直接运行py文件的问题

    在使用Python便携版时,有时会遇到无法直接运行.py文件的问题。这个问题通常是由于系统环境变量没有配置正确导致的。本文将详细讲解如何解决这个问题。 解决方法 方法一:配置环境变量 在Windows中,我们需要将Python便携版的路径添加到系统环境变量中。以下是配置环境变量的步骤: 右键点击”电脑”,选择”属性”。 点击”高级系统设置”。 点击”环境变量…

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