python代码中 from . import ××× 是什么意思?

Python代码中的`from . import XXX`用于包内相对导入,路径基于当前模块的`__name__`。它导入同级目录下的`__init__.py`中的`XXX`对象。若`__init__.py`不存在,则需指定具体模块如`from .A import XXX`。使用`.`代表当前目录,`..`代表上一级目录。在解释器直接运行时,`__name__`为`__main__`,而在导入时为模块名,这会影响相对导入的行为。
摘要由CSDN通过智能技术生成

包内的文件相互导入分两种,用绝对路径和相对路径,用.或者..都是第二种,相对路径。

重点是,相对导入的路径依赖于当前模块的_name_,是根据它的“值”去找平级或者上级文件。

 

假设该from . import x语句存在于proj/test.py中,它会导入同级目录下的__init__.pyproj/__init__.py中的x对象,如果没有proj/__init__.py或有那个文件但是文件中不存在x对象,就导入proj/x/__init__.py,如果还没有,就导入proj/x.py,还没有就报错。

其中同级是按__name__的前一部分或 __package__ 确定的。如果用python proj/test.py运行,__name__就是__main____package__是None,就会报错。如果用python -m proj.test运行,虽然__name__还是__main__,但是__package__proj,就能成功导入,即使proj/__init__.py不存在也行。

 

例如:在模块A.B.C中的代码:

from . import D     # 导入A.B.D
from .. imp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值