Python-相对导入、绝对导入

本文介绍了Python 2.x和3.x中包导入机制的区别,包括模块搜索路径的不同、相对导入和绝对导入的应用场景,并解释了如何解决包内外同名模块导致的导入问题。
包导入(import  A.B.C 或者from A.B import C)
2.X,模块搜索路径:
1、程序的主目录
2、系统变量目录
3、标准库
4、.pth文件中的内容
先执行相对导入(1),后执行绝对导入(2、3、4)
存在的问题:如果用户想导入的是在包外的同名的模块,用户无法导入需要的模块,导入的是包内同名的模块

3.X,模块搜索路径
1、系统变量目录
2、标准库
3、.pth文件中的内容
直接执行绝对导入(1、2、3),不会去搜索主程序的目录
如果包内包外存在同名的模块,用户导入的都会是包外的模块
如果真的想导入包内的模块,在3.X提供了相对导入的方式:from . import c(.代表当前目录,即执行程序的目录),表示从执行程序的目录中搜索C模块

相对导入其他格式
from . import C   导入包内的C模块(A.B.C)
from .. import E  导入上级目录的E模块(A.E)
from ..E import F  导入上级目录的E模块的F属性(A.E.F)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值