什么时候Python导入?

Nat*_*ith 3 python python-import python-3.x

如果我import在一个if/else块中嵌套了语句,我是否会提高效率?我知道有些语言会对代码import和语法问题进行"一次通过" .我只是不确定Python是如何深入研究的.

我的假设

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

脚本

我编写了一个脚本,这个脚本将被更多的计算机文化使用,而那些则更少.我的部门非常熟悉从命令行运行带有参数的脚本,所以我已经设置它来获取它需要的参数,如果它没有找到它期望的参数,它将启动带有标题,按钮的GUI,和更详细的说明.但是,这意味着我正在导入仅在未提供参数的情况下使用的库.

附加信息

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

Sha*_*ger 5

import 语句在正常执行中遇到时执行,因此如果条件阻止执行该行,则不会发生导入,并且您将避免不必要的工作.

也就是说,如果模块将以其他方式导入(例如,无条件导入的模块B依赖于A,并且您有条件地导入A),节省的费用是微不足道的; 在第一次导入模块之后,后续导入只获得对同一个缓存模块的新引用; 导入机器必须首先处理一些复杂的东西来处理导入钩子等,但在通常情况下,它仍然相当便宜(导入已经缓存的模块时为亚微秒).

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