为什么在导入整个包时在Python中导入特定的子包?

时间:2014-10-18 16:30:25

标签: python

我不是Python程序员,但我读了很多Python脚本,从已经导入的整个软件包中导入子包。

例如:

  import multiprocessing
  from multiprocessing import Process

如果已经导入了整个父包,多处理,那么具体导入Process的目的究竟是什么?

3 个答案:

答案 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.Processmultiprocess.Pipemultiprocess.Queue

第二行from multiprocessing import Process只是将名称multiprocess.Process直接导入当前命名空间,因此可以将其称为Process而不是multiprocess.Process更长的Process = multiprocessing.Process 。它可以替换为

multprocessing.Process

因为它只为import创建一个新名称。

Python没有一种语法可以使用单个{{1}}从该包/模块中导入整个包/模块的名称​​和一个或多个名称言。