什么是。在Python中的import语句中是什么意思?


141

我正在查看Python multiprocessing模块的代码,其中包含以下行:

from ._multiprocessing import win32, Connection, PipeConnection

代替

from _multiprocessing import win32, Connection, PipeConnection

细微的差别是前一个时期_multiprocessing。那是什么意思?为什么要月经?



如果没有使用.,则_multiprocessing.py由于主脚本旁边的文件因某种无法理解的原因而存在文件时,该文件multiprocessing将中断。使用.,可以确保获得自己的模块。
克里斯·摩根

如果a .引用对等模块,那么为什么该文档说要使用a .,则该多处理模块应成为常规sys.path库的一部分?问题和克里斯的澄清混淆了他们还是我不明白?感谢帮助。
rfii

Answers:


120

这是显式相对导入的新语法。这意味着从当前包导入。


26
什么定义了“当前程序包”是什么?
fraxture

7
应该说导入包从哪里来。它基本上意味着当前的名称空间或包目录。
基思2015年

2
谢谢,我想我知道你的意思。为了清楚起见,您介意提供一个例子吗?
fraxture

11
您可以执行以下操作:from . import peermodule from .. import parentpackagemodule
Keith 2015年

2
@bmc学习的好方法是设置一个小实验,然后自己尝试。;-)
Keith

22

模块名称中的点用于相对模块导入(请参见此处此处,第6.4.2节)。

您可以使用多个点,而不是指当前软件包,而是指其父对象。这仅应在包内使用,在主模块中,应始终使用绝对模块名称。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.