问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python使用相对导入的具体意义?

发布网友 发布时间:2022-04-06 01:58

我来回答

2个回答

热心网友 时间:2022-04-06 03:28

除了让包内导入更加显式,这个功能的一部分设计初衷是,为了帮助脚本解决同名文件出现在模块搜索路径上多个不同位置时的二义性。考虑包目录,这定义了一个名为mypkg 的包,其中含有名为mypkg.main和mypkg.string 的模块。现在,假设模块main试图导入名为string的模块。在 Python 2.X和更早版本中,Python会先寻找mypkg目录以执行相对导入。这会找到并导入位于该处的string.py文件,将其赋值给mypkg.main模块命名空间内的名称string。
不过,这一导入的本意可能是要导入Python标准库的string模块。可惜的是,在这些Python版本中,无法直接忽略mypkg.string 去寻找位于模块搜索路径更右侧的标准库中的string模块。此外,我们无法使用完整包导入路径来解决这个问题,因为我们无法依赖在每台机器上的标准链接库路径。换句话说,包中的简单导入可能具有二义性而且容易出错。在包内,我们无法确定imports pam语句指的是包内的模块还是包外的模块。一种可能的后果是,一个局部的模块或包会在不经意间隐藏了sys.path 上的另一个模块。
在实践中,Python使用者可以避免为他们自己的模块重复使用标准库模块的名称(如果需要标准string库,就不要把新的模块命名为string)。但是,一个包还是有可能意外地隐藏标准库模块。再者,Python 以后可能新增标准库模块,而其名称可能刚好就和自己的一个模块同名。而依赖于没有点号开头相对导入的程序代码同样也不容易理解,因为读者可能对希望使用哪个模块而感到困惑。所以我们最好能在代码中显式地指出导入的解析过程。

热心网友 时间:2022-04-06 04:46

1 基本原理

在 Python 里面,一个 .py 文件可以称为模块,包含了 __init__.py 文件的称为包。

当一个模块被执行时,Python 会从 sys.path 给出的路径去找在模块中引入的包或其它模块,如果找不到,程序就会报错。

2 绝对导入

绝对导入是默认的导入方式,因为它更常见,并且它有相对导入的所有功能。

2.1 用法

绝对导入可以使用 import <> 或 from <> import <> 这两种语法,比如在 moleA 模块里面,使用下面的绝对导入语句是有效的。



作者:拯救梦想
链接:https://zhuanlan.hu.com/p/145903888
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.2 不足

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在公交车上实施扒窃,会受到怎样的处罚? 交通违法行为识别 公交车扒窃会如何处罚? 郑州鱼缸清洗找哪家公司做得比较好? 郑州有没有专业维修鱼缸,清洗鱼缸的? ...的鱼缸,放在办公室养些鱼水草之类的。郑州哪里有卖这样的鱼缸。_百... 我们公司想要定做个观赏鱼缸,不知道郑州哪家公司最专业? 谁知道郑州生态鱼缸定做哪家做的效果最好? 联想电脑启用无线功能的功能键? 笔记本电脑怎么连接网笔记本电脑怎样连接无线网 python导入模块 python 什么时候用面向对象 苹果ios14快捷指令在哪里 ios14充电提示音有时候就没了 苹果更新以后微信发不了图片 ios更新完微信不能发图片 苹果手机系统更新发不了图片 ios14 照片怎么选择 苹果14系统怎么选照片 为什么苹果升级ios14后朋友圈照片 iphone微信选不了照片 怎么用PHP设置密码和验证码? php 实现三次登陆失败出现验证码并验证 php验证码怎么使用 php中用户登入和验证码验证问题 php如何实现登录超过3次才出现验证码并对验证码进行验证的功能 求一个php登录代码,有验证码功能,能答必采纳。 验证码怎么用php实现? php把字符串转换成数组 PHP 怎么用parseInt? python程序设计语言的程序可以导入别的模块 Python都需要那些技术? 详解Python中import方法引入模块 为何python要引入模块的概念? 如何在python3中正确导入同一目录下的模块 python 导入全部模块 mac下如何搭建Php开发环境 苹果系统怎么搭建PHP环境 如何在苹果电脑上安装wordpress环境 php中怎样销毁一个静态变量 php中,如何在一个递归中return一个值之后释放这个静态变量? PHP如何实现修改config.php里定义的静态变量。给个简单的例子 php中的静态变量和动态变量的区别 如何释放函数中静态变量 php服务端静态变量 请问PHP中的静态变量怎么理解? PHP静态变量 静态变量的PHP中 php 怎么关闭数据库 PHP中用mysqli面向对象打开连接关闭mysql数据库的方法