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

2024-09-30 06:16:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着了解一些关于设计的东西。在

我看到了许多代码,其中包含Lazy Import特性使用人Lazy Import,我指的是由某些支持“LazyImport”风格的配方、包和模块提供的工具。这些实现通常只在模块被使用时才导入它,并为不同的东西提供一些额外的钩子。我知道错误条件在这里被延迟了,但是我想理解为什么Lazy Import不是Python中的默认策略。在

它的(其他)缺点是什么妨碍了它成为一个普遍有用的案例。或者,是否有语言将此作为默认的导入机制策略。在


Tags: 模块工具代码import风格错误配方特性
3条回答

与PHP不同,Python很少以每个请求/操作/…的方式使用。。。使整个应用程序重新启动。
因此,在启动时导入所有内容的好处是,在应用程序执行延迟令人讨厌的操作时,不必执行导入。
local/lazy导入的唯一优点是循环导入不会有问题。在

有时模块在第一次加载时会做一些重要的事情,因此可能会中断程序以延迟模块的导入。例如,如果模块定义了在程序首次启动时应解析的命令行标志,则必须在解析参数之前导入该模块。由于Python最初的设计目的是急切地进行导入,所以现在不可能在不破坏某些现有程序的情况下更改默认行为。另外,正如其他一些答案中提到的,对于长时间运行的服务,通常需要在服务请求之前预先加载所有内容,这样前几个请求在等待导入模块时不会减慢速度。在

下面是python中lazy import的一个示例:

def xmlfrobnicator(xmlstr):
    from lxml import etree

    # do whatever

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

我想您可能已经看到了javascript,在javascript中,程序可能只运行很短的时间,并且不会使用它们的所有功能,即使它们使用了,后台加载模块可以提高用户感知的速度。在

相关问题 更多 >

    热门问题