详解Python中的相对导入和绝对导入

详解Python中的相对导入和绝对导入

在Python中,导入模块是非常常见的操作。在导入模块时,可以使用相对导入或绝对导入。

相对导入

相对导入是指从当前模块的位置出发,按照相对路径导入模块。相对导入使用点号(.)和双点号(..)表示相对路径。

假设目录结构如下:

.
├── main.py
└── package
    ├── module1.py
    ├── module2.py
    └── subpackage
        ├── module3.py
        └── module4.py

其中,main.py是主程序入口,默认的工作目录为当前目录。

module2.py中,如果想导入同级目录下的module1.py模块,可以使用相对导入,代码如下:

from .module1 import something

module3.py中,如果想导入父级目录的module2.py模块,可以使用相对导入,代码如下:

from ..module2 import something

绝对导入

绝对导入是指按照模块全名的方式导入模块,即从Python安装路径开始寻找模块。绝对导入使用fromimport关键字。

假设有一个模块mymodule,其全名为mypackage.mysubpackage.mymodule,要导入它,代码如下:

from mypackage.mysubpackage import mymodule

要注意的是,如果模块mymodule和当前模块位于同一级目录下,不能使用绝对导入。此时应该使用相对导入。

示例说明

示例一

我们可以在module1.py中定义一个函数,然后在module2.py中使用相对导入来调用该函数。

module1.py中定义hello()函数:

def hello():
    print("Hello, world!")

module2.py中使用相对导入导入module1.py,并调用hello()函数:

from .module1 import hello

hello()

输出:

Hello, world!

示例二

我们可以在main.py中导入mypackage.mysubpackage.mymodule,并调用该模块中定义的函数。

mypackage.mysubpackage.mymodule中定义echo()函数:

def echo(message):
    print(message)

main.py中导入mypackage.mysubpackage.mymodule,并调用echo()函数:

from mypackage.mysubpackage import mymodule

mymodule.echo("Hello, world!")

输出:

Hello, world!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python中的相对导入和绝对导入 - Python技术站

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

相关文章

  • 详解Python3中字符串中的数字提取方法

    当我们需要从Python字符串中提取数字时,有多种方法可供选择。下面简要介绍了一些最流行的提取数字方法。 1. 使用正则表达式提取字符串中的数字 使用正则表达式来提取数字是最常见的方法之一。我们可以通过使用re模块中的findall()函数来实现这一目的。函数返回一个列表,其中包含所有与模式匹配的字符串。 import re text = "Hel…

    python 2023年6月3日
    00
  • Python实现Excel文件的合并(以新冠疫情数据为例)

    让我来为你详细讲解“Python实现Excel文件的合并(以新冠疫情数据为例)”的完整实例教程。 标题 Python实现Excel文件的合并(以新冠疫情数据为例) 介绍 这是一篇使用Python语言实现合并Excel文件的教程,以新冠疫情数据为例。在这个教程中,我们将向你展示如何使用Python中的pandas库将多个Excel表格合并为一个大表格。 步骤 …

    python 2023年5月13日
    00
  • Python 实现Windows开机运行某软件的方法

    Python 实现Windows开机运行某软件的方法 背景 很多时候我们需要在Windows操作系统中开机自动运行某个软件,例如开机自动运行QQ,自动运行Chrome等。本文将使用Python来实现这个功能。 实现过程 第一步:制作VBS脚本 首先我们需要制作一个VBS脚本,以实现在Windows开机时自动启动某个应用程序的目的。具体的代码如下: Set W…

    python 2023年5月30日
    00
  • Python自定义函数实现求两个数最大公约数、最小公倍数示例

    下面是 Python 自定义函数实现求两个数最大公约数、最小公倍数的详细攻略。 求两个数最大公约数 最大公约数,也称为最大公因数,是两个或多个整数的公共因数中最大的一个数。求两个数的最大公约数,可以使用辗转相除法,也称为欧几里德算法。 辗转相除法 辗转相除法基于下面这个定理:两个数的最大公约数等于其中较小的数和两数相除余数的最大公约数。使用递归方式实现代码如…

    python 2023年6月5日
    00
  • 不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)

    不归路系列:Python入门之旅-一定要注意缩进!!! 一、缩进的重要性 在Python中,缩进是一种语法规则,它用来表示代码的块级别结构,是Python语言最重要的语法之一。缩进的作用是用来标示代码的层次结构,一般用4个空格或者1个制表符来表示,当然,两种不建议混用。 1.1 缩进的作用 Python中的代码块是通过缩进来表示的,每一级缩进代表一个嵌套层级…

    python 2023年5月13日
    00
  • python简单操作excle的方法

    我来为您讲解一下如何使用Python进行Excel文件操作的完整实例教程。 1. 安装所需模块 首先,我们需要安装Python的xlrd和xlwt模块,这两个模块分别用于读取和写入Excel文件。我们可以使用pip命令进行安装: pip install xlrd pip install xlwt 2. 读取Excel文件 接下来我们来看一个读取Excel文件…

    python 2023年5月13日
    00
  • Python探索之自定义实现线程池

    Python探索之自定义实现线程池 什么是线程池? 线程池是一种线程管理的方法,它可限制线程的数量,避免线程过多消耗过多的系统资源,提供对线程的增加、删除等操作进行优化,以提升系统性能。 自定义线程池的实现 Step 1:导入所需模块 import threading import queue Step 2:定义线程池类 class ThreadPool: …

    python 2023年5月19日
    00
  • 三步解决python PermissionError: [WinError 5]拒绝访问的情况

    三步解决Python PermissionError: [WinError 5] 拒绝访问的情况 在使用Python时,可能会遇到PermissionError: [WinError 5] 拒绝访问的错误。这个错误通常是由于文件或目录的权限设置不正确导致的。本文将介绍三个步骤来解决这个问题。 步骤1:以管理员身份运行 在Windows系统中,管理员权限可以访…

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