如果我在import
块中嵌套了if/else
个语句,我是否会提高效率?我知道有些语言会对import
的代码和语法问题进行“一次通过”。我只是不确定Python是如何深入研究它的。
因为Python是解释的而不是编译的,所以通过将import
语句嵌套在else块中,在到达该行之前不会导入这些库,从而节省系统资源,除非另有需要。
我编写了一个脚本,这个脚本将被更多的计算机文化使用,而那些则更少。我的部门非常熟悉从命令行运行带有参数的脚本,所以我已经设置它来获取它需要的参数,如果它没有找到它期望的参数,它将启动带有标题,按钮的GUI,和更详细的说明。但是,这意味着我正在导入仅在未提供参数的情况下使用的库。
答案 0 :(得分:5)
import
语句在正常执行中遇到时执行,因此如果条件阻止执行该行,则不会执行导入,并且您将避免不必要的工作。
也就是说,如果模块将以其他方式导入(例如,无条件导入的模块B依赖于A,并且您有条件地导入A),节省的费用是微不足道的;在第一次导入模块之后,后续导入只获得对同一个缓存模块的新引用;导入机器必须先做一些复杂的事情来处理导入钩子等,但在通常情况下,它仍然相当便宜(导入已经缓存的模块时为亚微秒)。
这样可以省去任何东西的唯一方法是,如果有问题的模块不会以任何方式导入,在这种情况下你会避免加载它的工作和加载的模块使用的内存。