gpt4 book ai didi

python - Python 到底什么时候导入?

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:45 24 4
gpt4 key购买 nike

问题

如果我在 if/else block 中嵌套了 import 语句,我是否提高了效率?我知道有些语言会针对 import 和语法问题对代码进行“一次通过”。我只是不确定 Python 在这方面有多深入。

我的假设

因为 Python 是解释型的而不是编译型的,通过将 import 语句嵌套在 else block 中,这些库在到达该行之前不会被导入,从而节省系统资源,除非另有需要。

场景

我已经编写了一个脚本,该脚本将被更多计算机知识和较少计算机知识的人使用。我的部门非常乐意从带有参数的命令行运行脚本,因此我将其设置为根据需要获取参数,如果它没有找到它期望的参数,它将启动一个带有标题、按钮的 GUI,和更详细的说明。但是,这意味着我导入的库仅在未提供参数的情况下使用。

附加信息

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

最佳答案

import 语句按照它们在正常执行中遇到的方式执行,因此如果条件阻止该行被执行,导入就不会发生,您将避免不必要的工作。

也就是说,如果要以其他方式导入模块(例如,无条件导入模块 B 依赖于 A,而您有条件地导入 A),节省的钱是微不足道的;在第一次导入模块后,后续导入只会获得对同一缓存模块的新引用;导入机制必须先做一些复杂的事情来处理导入 Hook 等,但在通常情况下,它仍然相当便宜(导入已缓存的模块时为亚微秒)。

唯一能为您节省任何费用的方法是,如果有问题的模块不会以任何其他方式导入,在这种情况下,您可以避免加载它的工作以及加载模块使用的内存。

关于python - Python 到底什么时候导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44974723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com