编程语言
首页 > 编程语言> > 在函数中导入python库与全局导入之间有何区别?

在函数中导入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