假设我要导入一个在函数内部使用的python库。在函数中导入库还是全局导入更好?
做这个
def test_func:
import pandas as pd
# code implementation
还是在python文件顶部的下面一行要全局导入?
import pandas as pd
每种方法的优缺点是什么?哪一种是python的最佳做法?
我正在使用python v3.6
编辑:做一些澄清。
假设我有2个功能。
def func1:
import pandas as pd
# code implementation
def func2:
import pandas as pd
# code implementation
python脚本运行两个函数。该库会被导入两次还是python编译器足够聪明以至于只能导入一次?这会影响性能。
名称可见性和执行时间点有所不同。导入文件或自行运行时,将导入模块级导入。仅当该函数运行时,该函数才是本地函数。导入的名称对于文件中的所有内容都是可见的,或者仅在执行导入的函数中可见。
由于击中import语句(虽然很小,但仍然很昂贵)会产生成本,所以本地语句将始终执行,而不仅仅是执行一次。但是,它不会完全重新导入模块,python会在第一次导入模块时缓存模块(请参阅reload
和sys.modules
)。
显然,最佳实践是使用模块级别的导入,这就是您在99.999%的代码中看到的。可维护性是一个很大的原因-如果您想了解模块具有的依赖关系,只需查看顶部即可,而不必梳理所有代码,这很方便。
那么什么时候使用本地导入功能呢?
有以下三种情况:
您不能更早使用导入。例如,在运行时通过配置或系统检查选择了数据库或其他系统/功能的后端时,就会发生这种情况。
否则,您将有循环进口。这是一种罕见的情况,也是一种代码气味,因此,如果有必要,请考虑进行重构。
通过推迟模块导入来减少启动时间。但是,这很少有用。
因此,对于您的情况,答案是快速而简单的“不做”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句