为什么Lazy Import在Python中不是默认值?

Sen*_*ran 7 python

我试图理解设计方面的一些事情.

我看到了许多使用Lazy Import功能的代码.通过Lazy Import,我的意思是由某些配方,包和模块提供的设施,它们支持"LazyImport"风格.这些实现通常旨在仅在使用模块时导入模块,并为不同的事物提供一些额外的钩子.我知道错误条件在这里延迟了,但我试图理解为什么Lazy Import不是Python中的默认策略.

什么(其他)缺点是阻止它做出一般有用的案例.或者是否有语言将其​​用作默认导入机制策略.

Mar*_*cin 5

这是python中延迟导入的示例:

def xmlfrobnicator(xmlstr):
    from lxml import etree

    # do whatever
Run Code Online (Sandbox Code Playgroud)

它不常用,因为它对大多数程序几乎没有什么好处——一旦加载,模块就会被加载(除非你采取措施卸载它),而且很少有依赖项很少使用,以至于只在加载时加载它使用是值得的。

我想你可能一直在看 javascript,其中程序可能只运行很短的时间,并且没有使用它们的所有功能,即使它们使用了,模块的后台加载也提高了用户感知的速度。


Thi*_*ter 5

与 PHP 等不同,Python 很少以每个请求/操作/... 都会导致整个应用程序重新启动的方式使用。
因此,在启动时导入所有内容的优点是,当应用程序正在执行一些令人烦恼的延迟时,不必执行导入。
本地/延迟导入的唯一优点是循环导入不会出现问题。