假设我要导入一个在函数内部使用的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

python库和模块的区别_在函数中导入python库与全局导入之间有何区别?相关推荐

  1. python构造函数调用成员函数_成员函数中的Python调用构造函数

    让我们以这个类为例,它正在扩展MySQLDB的connection对象.在class DBHandler(mysql.connections.Connection): def __init__(sel ...

  2. python字符串说法错误的是_以下选项中,关于Python字符串的描述错误的

    以下选项中,关于Python字符串的描述错误的 答:Python字符串提供区间访问方式,采用[N:M]格式,表示字符串中从N到M的索引子字符串(包含N和M) 寒武纪生物大爆发的原因可能是 答:间断平衡 ...

  3. adc分辨率和精度的区别_科普 | 传感器的灵敏度、分辨率和精度三者之间有何区别?...

    传感器作为一种检测装置,具有微型化.数字化.智能化.多功能化.系统化.网络化的特点.在现代工业生产尤其是自动化生产过程中,需要各种传感器来监视和控制生产过程中的各个参数,使设备工作在正常状态或最佳状态 ...

  4. python可以用vs编辑吗_在VS2017中编写Python程序

    最近开始了python的学习,在搭建完python环境之后,在选择IDE的时候陷入了困境,首先选择的是PyCharm但是用着还是不习惯,毕竟用VS开发了几年了,突然换软件总感觉有点不适应,就想到了强大 ...

  5. python可以调用windows资源吗_在Windows中使用Python设置文件夹权限

    慕丝7291255 对于那些对ACE安全描述符的"列表"感兴趣的人,使用以下数据结构.我在此方面获得了一些帮助,并且从此以后就一直使用它.typical_aces={    203 ...

  6. python代码用c语言封装_使用C语言扩展Python程序的简单入门指引

    一.简介 Python是一门功能强大的高级脚本语言,它的强大不仅表现在其自身的功能上,而且还表现在其良好的可扩展性上,正因如此,Python已经开始受到越来越多人的青睐,并且被屡屡成功地应用于各类大型 ...

  7. python程序运行按什么键_太惨!学Python方法用错,直接从入门到放弃!

    原标题:太惨!学Python方法用错,直接从入门到放弃! 从你开始学习编程的那一刻起,就注定了以后所要走的路-从编程学习者开始,依次经历实习生.程序员.软件工程师.架构师.CTO等职位的磨砺:当你站在 ...

  8. 查看python内部模块命令,内置函数,查看python已经安装的模块命令

    查看python内部模块命令,内置函数,查看python已经安装的模块命令 可以用dir(modules) 或者用 pip list 或者用 help('modules') 或者用 python -m ...

  9. 在学Python前学Linux,Python原来这么好学-1.2节: 在Linux中安装python

    这里将告诉您Python原来这么好学-1.2节: 在Linux中安装python,具体操作过程:在Linux系统的主要发行版中,按其软件包格式来进行划分,可分为Deb系以及RPM系操作系统.Linux ...

最新文章

  1. 有100名考生参加C语言测验,全国计算机一级考试模拟试题及答案(1-100)
  2. python编程有什么用处-python中的生成器是什么?生成器有什么用处?
  3. WebMagic之爬虫监控
  4. Python的matplotlib(2)
  5. How is SAP CRM employee responsible being determined
  6. 图像处理中常见的时域与频域区别与关系
  7. java集成测试_基于TestNG+Mockito及自动装配注解的Spring MVC集成测试
  8. python动态导入模块_Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析...
  9. python测试开发工程师前景_测试开发工程师,薪水20k值吗?
  10. Android 全局替换项目默认字体
  11. springboot实现条形码_OkapiBarcode生成条形码
  12. JN项目-qq昵称含有表情无法进行第三方登录
  13. 自然语言处理(NLP)概论
  14. 如何从固态硬盘启动计算机,怎么把固态硬盘设置为第一启动系统
  15. R_leaflet包_最易上手地图教程(一)
  16. 论坛数据库设计初步设计
  17. 《面向对象程序设计》2018年春学期寒假及博客作业总结
  18. android8carlife连接不上,carlife为什么连接不上汽车 连接不上汽车解决方法
  19. 第一台纯意念控制的计算机是,全球第一台适用于全肢体中风康复的“纯意念控制”人工神经机器人系统是()。...
  20. PS2060L-ASEMI肖特基二极管PS2060L

热门文章

  1. ARM 之八 Cortex-M/R 内核启动过程 / 程序启动流程(基于IAR)
  2. DNS、IP地址、子网掩码和网关
  3. linux忆连软件,linux安装软件方法汇总
  4. java 多态向子类,在Java多态中调用子类
  5. hadoop yarn 获取日志_赵丽颖固然漂亮,可这份Hadoop核心教程也不差啊!
  6. 计算机应用基础模4答案,2012年自考“计算机应用基础”练习题及答案四
  7. 做百度AI工程师,还要会“相牛”?
  8. linux安装weblogic9,linux_weblogic9_安装说明.doc
  9. 2019.02.07 bzoj4316: 小C的独立集(仙人掌+树形dp)
  10. Snort里如何将读取的包记录存到指定的目录下(图文详解)