我只是想知道,我经常有很长的python文件,导入往往很快就会堆叠。
PEP8表示应始终在文件的开头写入导入。
调用文件中编码的函数时,是否导入了所有导入的库?或者只调用必要的库?
担心这个有意义吗?是否没有理由在需要它们的函数或类中导入库?
答案 0 :(得分:3)
每当Python命中一个import语句时,它都会检查该模块是否已经导入,如果没有,则导入它。因此,文件顶部的导入将在您的文件运行或由另一个模块导入时立即发生。
对此有一些overhead,因此通常最好将导入保留在文件的顶部,以便预先处理成本。
答案 1 :(得分:2)
导入的最佳位置位于文件的顶部。这会将依赖关系记录在一个地方,并且可以更早地出现错误。导入本身实际上发生在import
语句时,但这很少发生。
在您处于需要它的函数或方法之前,通常不会导入任何内容。 (通过在类的主体内部这样做,从来没有任何好处。)很少有你想要可选的依赖项,甚至更罕见的是,这是获得它们的正确技术。也许你可以分享一个引人注目的用例?
答案 2 :(得分:1)
担心是否有意义 此?
没有
没有理由在需要它们的函数或类中导入库。
它只是很慢,因为import
语句必须检查它是否已被导入一次,并意识到它已被导入。
如果你把它放在经常调用的函数中,你可以在所有import
检查时浪费一些时间。
答案 3 :(得分:0)
当包含导入的模块被执行或导入时,而不是在调用函数时,会发生导入。
通常,我不担心。如果您遇到减速,您可能会查看您的问题是否与此相关。如果是,您可以检查您的模块是否可以分成更小的模块。
但如果所有文件都被同一个程序使用,那么你最终还是会导入所有文件。
答案 4 :(得分:0)
如果模块中的一个函数是唯一一个导入给定其他模块的函数(假设您有一个发送推文的函数,只有某些配置选项打开),那么在函数中导入该特定模块是有意义的。
除非我看到一些分析数据证明不是这样,否则我的猜测是函数中import语句的开销完全可以忽略不计。