详解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日

相关文章

  • Python读取Excel一列并计算所有对象出现次数的方法

    关于“Python读取Excel一列并计算所有对象出现次数的方法”,以下是一些完整的攻略: 步骤1:安装pandas库 在Python中,我们可以使用pandas库来处理Excel文件。所以,首先需要安装pandas库。可以使用以下命令来进行安装: pip install pandas 步骤2:读取Excel文件 在Python中,可以使用pandas库中的…

    python 2023年6月3日
    00
  • scrapy结合selenium解析动态页面的实现

    在爬取动态页面时,可以使用Scrapy结合Selenium来实现。以下是Scrapy结合Selenium解析动态页面的实现的详细攻略: 安装Selenium和ChromeDriver 要使用Selenium,需要安装Selenium和ChromeDriver。可以使用pip安装Selenium。以下是安装Selenium和ChromeDriver的示例: p…

    python 2023年5月14日
    00
  • Python如何生成随机数及random随机数模块应用

    Python是一种强大的编程语言,它可以通过内置的random模块来生成随机数。随机数在程序设计中非常重要,可以用于测试、模拟和盐值等多个方面。本文将详细讲解Python如何生成随机数及random随机数模块应用,并提供两个示例说明。 生成随机数的方法 Python中生成随机数主要有以下两种方法:1.使用random模块的函数;2.使用Python内置的模块…

    python 2023年5月14日
    00
  • python 爬虫出现403禁止访问错误详解

    当使用Python进行网络爬虫时,可能会遇到被网站拒绝访问的情况,出现403 Forbidden错误。这种错误是由于目标网站的服务器禁止程序访问或者限制了访问请求的频率。下面是解决这种问题的完整攻略。 1.使用 User-Agent/Header 伪装请求头 许多网站可以检测到其服务器是否被网络爬虫访问,如果检测到则会拒绝访问。因此我们可以使用 User-A…

    python 2023年6月3日
    00
  • Python基于有道实现英汉字典功能

    下面我将详细讲解基于有道实现英汉字典功能的完整攻略,包括以下五个步骤。 第一步:获取API Key 1.首先访问有道翻译平台官网,注册成功后登录到官网 https://ai.youdao.com/ 2.在左侧边栏“产品服务”中找到“自然语言翻译”,并进入该页面。 3.点击“接入指南”,按提示申请API Key,申请后会获得自己的应用ID以及应用密钥。 第二步…

    python 2023年5月13日
    00
  • python3.6.5基于kerberos认证的hive和hdfs连接调用方式

    下面是介绍“python3.6.5基于kerberos认证的hive和hdfs连接调用方式”的攻略: 环境准备 安装Kerberos 在Linux上安装Kerberos,可以使用以下命令: sudo apt-get install krb5-user 配置Kerberos 对于不同的Kerberos配置文件,具体的修改可能会不同,具体修改方式可以参考官方文档…

    python 2023年6月6日
    00
  • Python实现学生管理系统的完整代码(面向对象)

    “Python实现学生管理系统的完整代码(面向对象)”是一个非常常见的Python实战项目,通过实现学生管理系统的完整代码,可以学习到Python面向对象编程的基础知识和应用。 下面介绍Python实现学生管理系统的完整攻略: 1. 确定系统需求和功能模块 在实现一个学生管理系统之前,我们需要先确定系统的需求和功能模块。通过需求分析,我们可以确定一个学生管理…

    python 2023年5月19日
    00
  • mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、启用事件(ENABLE)、事件重命名及数据库事件迁移操作详解

    MySQL的事件是一种特殊类型的定期操作,可用于自动执行任务。本文将详细讲解MySQL事件的修改、禁用、启用、重命名以及数据库事件迁移等操作技巧,希望对相关人员有所帮助。 修改事件(ALTER EVENT) 要修改已定义的MySQL事件,可以使用ALTER EVENT语句。可以使用该语句来更改事件的名称、安排方式、计划等。以下是一个修改事件的示例: ALTE…

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