Python系列教程235——相对导入

朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow

什么叫做相对导入?

一句话!导入同一个包中的模块就叫做相对导入。例如你要导入其它包中的模块,那就不是相对导入,而是绝对导入。

如何用代码来实现相对导入呢?

很简单!在from导入语句中加一个点号就可以了。

from .import spam # Relative to this package

上面就是一个相对导入语句(注意看,import单词前面有一个点号)。代码意思就是从当前代码文件所在的包中导入一个名为spam的模块。注意!注意!注意!在Python 3.0版本后,它只搜索当前的包,如果当前包中没有名为spam的模块,导入就失败了。而在Python2.6中,会先执行相对导入,如果找不到,再继续执行绝对导入,也就是去其它地方继续找。如果没有那个小点号,那么就不是相对导入,那么就不会搜索当前包。

from .spam import name

上面代码的意思是,从当前包中找到一个名为spam的模块,然后导入里面名为name的变量。

为什么要使用相对导入?

一句话!解决导入时的模糊性。这一句话有同学可能理解不了,下面我用很多句话来帮你深入深入又深入滴理解!

假射有一个包,名为mypkg,里面有如下文件

mypkg\__init__.pymain.pystring.py

又假射,在模块main中用下面的代码来试图导入名为string的模块。

import string

问题来了?mypkg包中和Python标准库中都有名为string的模块。如果没有相对导入这么一个技术,那么我们将永远无法导入标准库里的string模块,因为上面的代码首先会找到当前包mypkg中的string。有了相对导入这么一个规定,上面的语句就不会搜索mypkg包,那么就会找到标准库里的string。

如果你想使用mypkg包中的string,那么就要显式滴使用下面的相对导入语法。

from .import string # Imports mypkg.string (relative)

这就是为什么要使用相对导入!

不知道我说明白了没有。欢迎大家留言,留下点回忆!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/19423.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

国标GB28181视频平台EasyCVR视频融合平台H.265/H.264转码业务流程

在当今数字化、网络化的视频监控领域,大中型项目对于视频监控管理平台的需求日益增长,特别是在跨区域、多设备、高并发的复杂环境中。EasyCVR视频监控汇聚管理平台正是为了满足这些需求而设计的,它不仅提供了全面的管理功能,还支持…

一家餐饮企业,「闯入」AI阵地

作者| 皮爷 出品|产业家 “我们需要用AI来帮助我们门店破除内卷的状态。”一位连锁餐饮品牌告诉产业家,“这也是我们想尽快把AI用起来的原因,看看能不能带来一些帮助。” 这种情况正发生在一众餐饮企业中。 与这种情况对应的一个背景是&#xff0c…

基于YOLOv8深度学习的智慧社区建筑外墙破损(裂缝、露筋、剥落)检测系统研究与实现(PyQt5界面+数据集+训练代码)

随着智慧社区的发展,对建筑结构健康状况的实时监测变得愈发重要。在此背景下,建筑外墙破损(如裂缝、露筋和剥落)等问题对建筑物整体结构的安全性和耐久性构成了严重威胁,及时、准确地检测这些问题变得尤为关键。传统的…

单片机UART协议相关知识

概念 UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器) 是一种 异步 串行 全双工 通信协议,用于设备一对一进行数据传输,只需要两根线(TX,RX)。 异步&…

Python模块、迭代器与正则表达式day10

1、Python模块 1.1模块的简介 在编写代码的时候,创建的.py文件就被称为一个模块 1.2模块的使用 想要在a文件里使用b文件的时候,只要在a文件中使用关键字import导入即可 1.2.2 from ...import...语句 导入模块可以使用import,如果只导入模…

DDD架构设计知道(1)

看过很多人写架构设计的文章,绝大多数都是站在企业的角度谈“术”的层面。而当今的时代社会特别是00后门更多的会站在个人的角度,去看架构设计。个体和超级单体时代也已经来临,很多传统意义上的企业管理模式也在改变。所以如果架构设计面对当…

ubuntu下连接了192.168.1.x和192.168.2.x两个网络段,如何让这个两个网段互相通信?

在 Ubuntu 上连接两个网络段(如 个人终端A 192.168.1.10 和 个人终端B 192.168.2.10),需要配置路由和网络转发功能,使这两个网段能够相互通信。以下是实现方法: 步骤 1:确认网络配置 1. 确保 Ubuntu 机器…

Shell脚本5 -- 脚本与用户交互read

声明: 本文的学习内容来源于B站up主“泷羽sec”视频【shell编程(4)脚本与用户交互以及if条件判断】的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题&#xff0c…

mysql5.7主从问题记录

项目运行一段时间后突然打印如下异常信息。 由于现场环境和数据库是客户提供,看异常提示一直以为是代码问题,导致锁表。 通过逐步排查之后发现,是binlog把磁盘占满了,让客户的DBA设置了一下就恢复。 当设置了主从同步之后&…

使用卷积自编码器进行图像重构

1. 自编码器简介 自编码器(Autoencoder)是一种无监督学习的神经网络模型,旨在学习数据的有效表示。自编码器的主要组成部分包括编码器和解码器,二者共同工作以实现数据的压缩和重构。以下是自编码器的详细介绍: 1.1 …

鸿蒙实战:页面跳转传参

文章目录 1. 实战概述2. 实现步骤2.1 创建鸿蒙项目2.2 编写首页代码2.3 新建第二个页面 3. 测试效果4. 实战总结 1. 实战概述 本次实战,学习如何在HarmonyOS应用中实现页面间参数传递。首先创建项目,编写首页代码,实现按钮跳转至第二个页面并…

恶意代码分析入门--静态分析(chapter1_Lab01-01)

恶意代码分析-工具收集 - 17bdw - 博客园 (cnblogs.com) 实验环境:Lab 1-1 这个实验使用Lab01-01.exe和Lab01-01.dll文件,使用本章描述的工具和技术来获取 关于这些文件的信息。 操作环境 操作场景: windows xp sp3 实验工具: PEi…

【操作系统不挂科】<信号量(9)>选择题(带答案与解析)

前言 大家好吖,欢迎来到 YY 滴操作系统不挂科 系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 本博客主要内容,收纳了一部门基本的操作系统题目,供yy应对期中考试复习。大家可以参考 本章为选择题题库,试卷…

服务器数据恢复—raid5阵列故障导致上层系统分区无法识别的数据恢复案例

服务器数据恢复环境: 某品牌DL380服务器,服务器中三块SAS硬盘组建了一组raid5阵列。服务器安装Windows Server操作系统,划分了3个分区,D分区存放数据库,E分区存放数据库备份。 服务器故障: RAID5阵列中有一…

【ARM】MDK在debug模式下的Registers窗口包含哪些内容

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决客户对于Debug模式下,对于Registers窗口包含的内容了解。 2、 问题场景 Registers窗口是在进入到debug模式下后,就会出现一个窗口。窗口中包含了很多寄存器信息。但是对于具体内容不了解…

【后端】版本控制

版本控制 1. 什么是版本控制? 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。简单来说就是用于管理…

高项 - 项目进度管理

个人总结,仅供参考,欢迎加好友一起讨论 博文更新参考时间点:2024-12 高项 - 章节与知识点汇总:点击跳转 文章目录 高项 - 项目进度管理进度管理ITO规划监控 管理基础项目进度计划的定义和总要求管理新实践用户故事(补…

【数据结构】【线性表】【练习】反转链表

申明 该题源自力扣题库19&#xff0c;文章内容&#xff08;代码&#xff0c;图表等&#xff09;均原创&#xff0c;侵删&#xff01; 题目 给你单链表的头指针head以及两个整数left和right&#xff0c;其中left<right&#xff0c;请你反转从位置left到right的链表节点&…

鸿蒙原生应用开发元服务 元服务是什么?和App的关系?(保姆级步骤)

元服务是什么&#xff1f;和App的关系&#xff1f; 元服务是是一种HarmonyOS轻量应用形态&#xff0c;用户无需安装即可使用&#xff0c;具备随处可及、服务直达、自由流转的特征。 元服务是可以独立部署和运行的程序实体&#xff0c;独立于应用&#xff0c;不依赖应用可独立…

Redis中的String数据类型及相关命令

[经典面试题] redis虽然是单线程模型&#xff0c;为什么效率还这么高&#xff1f;速度这么快呢&#xff1f; 原因&#xff1a;1、redis主要访问内存&#xff0c;数据库则是主要访问硬盘。 2、redis的核心功能&#xff0c;比数据库的核心功能更简单。数据库对于数据的CRUD&…