Python究竟什么时候导入?

2024-03-29 13:46:53 发布

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

问题

如果在if/else块中嵌套了import语句,是否提高了效率?我知道有些语言对import和语法问题的代码进行“一次传递”。我只是不知道Python对此有多深入。你知道吗

我的假设

由于Python是解释的而不是编译的,因此通过在else块中嵌套import语句,在到达该行之前不会导入这些库,从而节省了系统资源,除非另有需要。你知道吗

情景

我已经写了一个脚本,将使用的两个更懂计算机和那些不太懂。我的部门非常熟悉从命令行运行带有参数的脚本,因此我将其设置为根据需要获取参数,如果找不到预期的参数,它将启动带有标题、按钮和更详细说明的GUI。但是,这意味着我正在导入仅在未提供参数的情况下使用的库。你知道吗

附加信息

  • GUI是非常非常基本的(六个文本字段和可能更少的按钮),所以我不关心仅仅创建和派生一个自定义GUI类,在这个类中导入必要的库。如果这变得更复杂,我会在将来考虑,甚至推动改变到web界面。你知道吗
  • 我的脚本完全按照我的预期运行。问题只是关于资源消耗。你知道吗

Tags: 代码import脚本语言参数if语法gui
1条回答
网友
1楼 · 发布于 2024-03-29 13:46:53

import语句是在正常执行时执行的,因此如果条件阻止执行该行,则不会发生导入,并且可以避免不必要的工作。你知道吗

这就是说,如果要以其他方式导入模块(例如,无条件导入的模块B依赖于A,而您有条件地导入A),那么节省的开销很小;在第一次导入模块之后,后续的导入只会获得对同一缓存模块的新引用;导入机器必须执行一些复杂的操作首先处理导入钩子之类的东西,但在一般情况下,它还是相当便宜的(当导入已经缓存的模块时是亚微秒)。你知道吗

这将节省您任何东西的唯一方法是,如果有问题的模块将不会以任何方式导入,否则,在这种情况下,您将避免加载它的工作和加载的模块所使用的内存。你知道吗

相关问题 更多 >