我不是Python程序员,但我读了很多Python脚本,从已经导入的整个软件包中导入子包。
例如:
import multiprocessing
from multiprocessing import Process
如果已经导入了整个父包,多处理,那么具体导入Process的目的究竟是什么?
答案 0 :(得分:2)
它使命名空间/模块可访问。
然后你可以写:
p = Process(target=f, args=('bob',))
p.start()
p.join()
否则,如果您没有使用行from multiprocessing import Process
,那么您会写:
p = multiprocessing.Process(target=f, args=('bob',))
p.start()
p.join()
<小时/> 鉴于您已定义函数f:
,上述代码可以正常工作
def f(name):
print 'hello', name
答案 1 :(得分:1)
在第二种情况下,multiprocessing.Process被别名为Process
答案 2 :(得分:1)
第一行import multiprocessing
初始化包并将名称导入本地名称空间。这样就可以访问multiprocess.Process
,multiprocess.Pipe
,multiprocess.Queue
等
第二行from multiprocessing import Process
只是将名称multiprocess.Process
直接导入当前命名空间,因此可以将其称为Process
而不是multiprocess.Process
更长的Process = multiprocessing.Process
。它可以替换为
multprocessing.Process
因为它只为import
创建一个新名称。
Python没有一种语法可以使用单个{{1}}从该包/模块中导入整个包/模块的名称和一个或多个名称言。