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

yizhihongxing

详解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生成随机数实例

    下面是讲解python3生成随机数实例的完整攻略: 1. 导入random库 生成随机数需要使用Python自带的random库,所以首先要导入该库。 import random 2. 生成随机整数 2.1 生成一个随机整数 使用random.randint()函数可以生成一个指定范围内的随机整数(包括范围两端的整数)。 例如,生成一个1~10之间的随机整数…

    python 2023年6月3日
    00
  • 用Python写一段用户登录的程序代码

    实现用户登录功能的程序代码通常涉及到以下几个步骤: 通过输入用户名和密码验证用户身份是否合法; 如果用户身份验证成功,允许用户访问系统中的指定资源; 如果用户身份验证失败,则提示用户重新输入用户名和密码。 针对以上要求,我们可以采用Python编写一个简单的用户登录系统,具体的实现步骤如下: 定义用户名和密码:在程序中定义一个与用户名对应的密码,可以存储在列…

    python 2023年5月30日
    00
  • python解决汉字编码问题:Unicode Decode Error

    当处理中文字符时,有时候会遇到 Unicode Decode Error 的错误,这是因为 Python 默认使用 ASCII 编码,而中文字符不在 ASCII 编码范围内,需要将中文字符进行编码和解码。 以下是解决 Unicode Decode Error 的攻略: Step 1:使用正确的编码格式 在 Python2 中,默认编码是 ASCII,而在 P…

    python 2023年5月20日
    00
  • python2和python3实现在图片上加汉字的方法

    下面是完整的Python2和Python3实现在图片上加汉字的方法攻略。 准备工作 首先,需要安装Pillow库。可以使用pip命令进行安装: pip install Pillow 接着,准备一张需要添加汉字的图片。 加字功能实现 下面是实现在图片上添加汉字的两个示例。 示例1: 添加单行汉字 在这个示例中,我们将在图片中心位置添加一行文本,如下: from…

    python 2023年5月20日
    00
  • Python如何使用正则表达式爬取京东商品信息

    以下是详细讲解“Python如何使用正则表达式爬取京东商品信息”的完整攻略,包括爬取京东商品信息的基本流程、正则表达的基本语法、使用re模块匹配网页内容的方法和两个示例说明。 爬取京东商品信息的基本流程 爬取京东商品信息的基本流程如下: 发送HTTP请求,获取网页内容。 解析网页内容,提取商品信息。 保存商品信息。 正则表达式基本语法 正则表达式是一种用于匹…

    python 2023年5月14日
    00
  • Python获取网络图片和视频的示例代码

    Python获取网络图片和视频的示例代码 在本教程中,我们将介绍如何使用Python获取网络图片和视频。我们将提供两个示例,演示如何使用Python和requests库下载网络图片和视频。 安装requests库 在使用requests库之前,我们需要先安装它。可以使用pip命令来安装requests库: pip install requests 下载网络图…

    python 2023年5月15日
    00
  • 解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题

    解决PyTorch多GPU训练保存的模型,在单GPU环境下加载出错的问题,需要做以下几个步骤: 1.指定模型加载到的设备 在单GPU环境下,需要明确指定模型要加载到的设备。使用 torch.load()函数时,加上参数map_location,将模型参数映射到指定设备上。 例如: import torch device = torch.device(‘cud…

    python 2023年6月3日
    00
  • Python使用graphviz画流程图过程解析

    Python使用graphviz画流程图过程解析 Graphviz是一种流程图绘制工具,可以用于绘制各种类型的图表,包括流程图、组织结构图、时序图等。在Python中,我们可以使用graphviz库来绘制流程图。本文将详细讲解如何使用Python和graphviz库来绘制流程图,并提供两个示例。 安装graphviz 在使用graphviz库之前,我们需要先…

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