Python导入所有列出的库吗?

2 投票
5 回答
1109 浏览
提问于 2025-04-15 20:36

我只是想问一下,我经常有很长的 Python 文件,导入的库往往堆积得很快。

PEP8 规定导入的库应该总是写在文件的开头。


当我调用文件中编写的一个函数时,所有导入的库都会被导入吗?还是说只有需要的库会被调用?

担心这个问题有意义吗?在需要的函数或类里面导入库就没有必要吗?

5 个回答

1

担心这个问题有意义吗?

没有必要。

在需要用到某些库的函数或类里面导入这些库是没有理由的。这会变得很慢,因为import语句需要检查这个库是否已经被导入过,然后确认它已经被导入。

如果你把这个放在一个经常被调用的函数里,就会浪费时间去做这些import的检查。

2

在你的文件顶部放置导入语句是最好的做法。这样可以把所有依赖的内容集中在一个地方,方便查看,也能让缺少依赖的错误更早出现。实际上,导入是在import语句执行的时候发生的,但这通常没什么大不了的。

通常情况下,等到你在一个需要某个库的函数或方法里再去导入它,并没有什么好处。(在类的内部这样做更是没有任何好处。)想要可选的依赖库是很少见的,而用这种方式来获取它们更是罕见。也许你可以分享一个有说服力的使用案例?

3

每当Python遇到一个导入语句时,它会检查这个模块是否已经被导入过。如果没有,它就会导入这个模块。所以你文件顶部的导入语句会在你运行这个文件或者被其他模块导入时立即执行。

这样做会有一些< a href="http://wiki.python.org/moin/PythonSpeed/PerformanceTips#ImportStatementOverhead" rel="nofollow noreferrer">额外开销,所以一般来说,最好把导入语句放在文件的顶部,这样可以提前处理这些开销。

撰写回答