【发布时间】:2017-12-11 23:38:15
【问题描述】:
问题
如果我将import 语句嵌套在if/else 块中,我会提高效率吗?我知道有些语言会“一次通过”import 的代码和语法问题。我只是不确定 Python 在这方面的深入程度。
我的假设
因为 Python 是解释而不是编译,通过将 import 语句嵌套在 else 块中,在到达该行之前不会导入这些库,从而节省系统资源,除非另有需要。
场景
我已经编写了一个脚本,它将被计算机知识较多的人和计算机知识较少的人使用。我的部门对从命令行运行带有参数的脚本非常满意,所以我已经将它设置为接受它需要的参数,如果它没有找到它所期望的参数,它将启动一个带有标题、按钮的 GUI,和更详细的说明。但是,这意味着我正在导入仅在未提供参数的情况下才使用的库。
附加信息
- GUI 非常、非常基本(六个文本字段和可能更少的按钮),所以我不关心只创建和生成一个自定义 GUI 类,其中将导入必要的库。如果这变得更复杂,我会在未来考虑,甚至推动更改为 Web 界面。
- 我的脚本功能完全符合我的预期。问题只是关于资源消耗。
【问题讨论】:
-
这听起来像是一个有效的假设,我假设如果 else: 被调用,你
import somePackage,那么一旦库被使用,del somePackage来清理资源。 -
@J0hn:
del somePackage不会清除任何东西;在第一次导入时,模块被缓存(因此后续导入不必重新导入它),因此资源仍然保留。del somePackage所做的只是删除一个对它的引用。 -
我重新打开了这个,因为the other question 是关于延迟/按需导入,而这个是关于条件导入(诚然相似)。我认为它应该被链接,但不能被归类为重复。
标签: python python-3.x python-import