为什么在“ import <module>”之后使用“ from <module> import <something>”?

时间:2019-07-23 08:33:19

标签: python python-import

我试图理解为什么在某些代码中通常先导入模块,然后再从模块中导入特定成员的方法

import module_a
from module_a import member_a

是否纯粹出于懒惰而不必写module_a.member_a而是直接访问member_a

这是代码段,我的问题源自:

import spinup
from spinup.utils.run_utils import ExperimentGrid
from spinup.utils.serialization_utils import convert_json

1 个答案:

答案 0 :(得分:2)

  

是否纯粹出于懒惰而不必写module_a.member_a而是直接访问member_a

本质上是,它允许使用spinupspinup.foo来使用spinup.Bar中的任何函数或类。在大多数情况下,主观上最好使用spinup.foo方法,因为通过这种方法可以很清楚地从所使用的函数定义位置开始。

此技术还允许使用ExperimentGrid,而无需每次使用时都指定spinup.utils.run_utils.ExperimentGrid。 当使用type annotations时,这对于类/类型特别有用:

def foo(param: ExperimentGrid) -> ExperimentGrid:

干净得多
def foo(param: spinup.utils.run_utils.ExperimentGrid) -> spinup.utils.run_utils.ExperimentGrid: