在函数中导入python库与全局导入之间有何区别?
作者:互联网
假设我要导入一个在函数内部使用的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%的代码中看到的.可维护性是一个很大的原因-如果您想了解模块具有哪些依赖关系,只需查看顶部即可,而不必梳理所有代码,这很方便.
那么何时使用本地导入功能?
有以下三种情况:
>您不能更早使用导入.这发生在例如通过配置或系统检查在运行时选择数据库或其他系统/功能的后端.
>您否则将有循环进口.这是一种罕见的情况,也是一种代码气味,因此,如果有必要,请考虑进行重构.
>通过推迟模块导入来减少启动时间.但是,这很少有用.
因此,对于您的情况,答案是快速而简单的“不做”.
标签:python-3-x,python-import,python 来源: https://codeday.me/bug/20191025/1930126.html