集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > Python >

成都比较好的python培训:Python的发展状况-2018年

发布者: 成都达内     浏览次数:     发布时间:2018-12-28 09:57:10

我爱Python。到目前为止,我在个人项目和专业项目中使用Python已经差不多10年了。我的工作是等量数据分析和快速原型设计,所以,Python很自然地成为一个很好的选择。...

  成都比较好的python培训:Python的发展状况-2018年

  这个月早些时候我在加拿大PyCon的演讲让我兴奋不已,在会议期间,我与许多聪明人交谈,似乎每个人都在谈论着同样的希望和痛苦。 这是一个试图将社区中微弱的耳语合成一个单一的有凝聚力的帖子。

  我爱Python。到目前为止,我在个人项目和专业项目中使用Python已经差不多10年了。我的工作是等量数据分析和快速原型设计,所以,Python很自然地成为一个很好的选择。Python最大的吸引人的地方就是,它有包含了几乎所有的库:机器学习,数据分析,重现性研究,可视化,云计算,Web API和控件。

  这是一个令人惊异的团体,和他们在StackOverflow和GitHub上进行在线交互通常是一种乐趣,所以我决定回来。2015年,我的一个朋友正在我们学校组织加拿大PyCon,并把我拉进了志愿者行列。我发现这个社区的人都很友好,而且非常有创意(那些想要使用Python描述木头结构特征的人???)。今年,我想我应该回报一些,于是在我的家乡多伦多的PyCon上做了一次演讲。我被这个社区在短短3年里的发展所震惊。当我被告知我将在“舞厅”演讲时,我以为那只是一个房间的名字,结果比那要大一点。

  和以前一样,我发现这个社区充满了聪明而有创造力的人。关于《专横的声音:用Python揭露哈利波特中的性别偏见》的讨论就是一个很好的例子,(不考虑你对这个主题的看法),这是一个滑稽而引人注目的标题。

  然而,与任何工程的工作一样,Python是一个正在进行的工作。今天我们对语言的理解甚至和五年前都不一样了,所以那些在当时看起来很奇怪的事情现在不仅是可能的,而且是合乎逻辑的。在这篇文章中,我想阐述我认为对这个社区有前途的发展方向,以及我希望看到它如何发展。

  成都比较好的python培训

  优点

  许多好的项目要么在2018年着陆Python大陆,要么克服了它们发展的困难。以下是我最喜欢的:

  JupyterLab

  Jupyter笔记本是一个web应用程序,它可以在线执行Python(和其他语言)并查看结果,包括图形、经过修饰的表和标记格式的散文。它还自动保存即时结果 (类似于一个REPL),允许导出多种格式,并且还有上百个其他特性。想要更深入的了解,请参阅我的PyCon谈话。Jupyter笔记本在社区中应用非常广泛,尤其是在科研领域。Jupyter团队理所当然地获得了2017年的ACM软件系统奖。

  Jupyterlab是对传统Jupyter笔记本的一个令人兴奋的改进版。它包括一些引人注目的特性,如单元格拖放、数据文件的内联查看(像 CSV)、选项卡环境和一个更加以命令为中心的接口。它仍然感觉像是一个测试版,在Reveal.js幻灯片导出功能和单元格崩溃方面有一些小毛病,并不像预期的那样工作。但总的来说,它是一个好工具变得越来越好,越来越适合用户的复杂程度的完美例子。

  Mypy

  mypy是Python的一个静态类型检查工具,已经存在了一段时间。但是,它在今年变得非常好,甚至于你可以将它集成到你的生产项目中,作为git钩子或其他CI流程的一部分。我发现它是对所有代码库的一个极其有用的补充,可以在我编写一行测试代码之前发现绝大多数错误。然而,这并非没有缺陷。在许多情况下,必须进行注释这让人感觉很麻烦,

  __init__ (self, *args) -> None

  以及其他我认为奇怪的地方。许多常用模块的类型库文件很缺乏,比如:

  * flask

  * msopack

  * coloredlogs

  * flask-restplus

  * sqlalchemy

  * nacl

  在没有进行有效配置的情况下将其集成到你的CI系统中仍然是一个问题。-- ignore-missing-imports选项基本上是强制的。在将来,我希望它成为一个社区标准,为所有打算作为库的模块提供类型库文件。

  Pipfile and pipenv

  我真的很喜欢Pipfiles! Pipfiles实现了PEP508,这促使它替代了Python的依赖管理系统requirements.txt。

  最顶层的动机是,和其他语言(如rust和javascript)的管理系统相比,使用 pip的依赖管理系统感觉要陈旧。而pip/requirement.txt 的缺陷在社区中似乎人尽皆知,本文是我见过的唯一一篇对其缺陷进行列举的文章,而且比较贴近实际。我推荐你阅读一下,但是它太长了还是不要去读:

  还没有关于requirements.txt的相应标准来具体说明它只是列出所有主要和次要的依赖项,还是有具体严格的要求?它包括固定的版本吗?另外,单独将开发环境需求分离出来是非常特别的做法。不同的小组开发不同的部分,所需要的环境需求也不一样,这样一来不利于软件的可再生构建。

  保持依赖关系列表的最新需要先执行pip install $package,其次是pip freeze > requirements.txt, 这是一个非常笨拙的工作流,有很多问题。

  开发管理生态系统由三个工具和标准(virtualenv、pip和requtrements .txt)组成,它们之间没有清晰的交互关系。既然你试图完成一项任务,为什么没有一种工具可以提供帮助呢?

  进入pipenv。

  Pipenv自动创建一个虚拟环境,在这个虚拟环境中安装和管理依赖关系,并保持Pipfile的更新。

  虽然这个想法很好,但是使用它非常麻烦。在实际使用中,我遇到了很多问题,常常不得不回头使用以前的处理方法——例如使用显式的虚拟环境。我还发现锁定非常慢(部分问题源于setup.py标准,它是工具生态系统中许多其他问题的根源)。

  Python的发展状况-2018年

  f-strings

  f-strings太棒了!许多人都写过关于f-strings优点的文章,从它们的自然语法到它们带来的性能改进。我觉得没有必要重复这些观点,我只想说这是一个神奇的功能,自从它们发布后我就一直在使用。

  但它引入的一个麻烦就是是编写print语句和logging语句之间的不一致。logging模块很棒,当关闭日志消息时,默认是不会格式化字符串。所以你可以这样写:

  x = 3

  logging.debug(‘x=%d’,x)

  如果将日志级别设置为DEBUG,则输出x=3,但如果将日志级别设置为更高,则甚至不会执行字符串插值。

  这是因为logging.debug是一个函数,字符串作为参数传递。你可以在易读的C源代码中看到它是如何工作的。但是,如果你编写以下代码,这个功能就会消失:

  x=3

  1ogging.debug (f'x={x}')

  无论日志级别如何,字符串插值都会发生。这在语言层面上是有意义的,但是在我的工作流程中实际的结果却是令人恼火的。调试代码时,我首先编写print语句,当一切正常时,我随后将它们转换为logging语句。因此,每个打印语句必须手工重写,以适应不同类型的字符串插值。我不知道如何解决这个问题,但我想把它指出来,因为我还没有看到其他人写过这个问题。

  缺点

  对于其他和Python一样久存在的项目 (哇,它和我一样古老),有一些模块和思想正在显示它们的年龄。这并不是一场历史发掘比赛,但是通过解决挑战,我们可以说我们作为一个社区可以做得更好。

  tox

  Tox仍然是python大陆中最好的(或者更准确地说,实际上是最好的)测试运行程序,但是它非常糟糕。不仅tox.ini的语法文件有点不直观,工具也非常慢。这不是tox的错,整个setup.py系统设计就是有问题的。因为这些文件声明包依赖关系,同时可以执行代码,发现依赖关系本质上是缓慢的。这导致许多工具运行缓慢。我相信这是我们作为一个社区在2019年应该解决的问题。

  成都比较好的python培训:Python的发展状况-2018年

  另外,目前还没有Pipfile支持,这使得使用它的价值主张大大降低。与所有事情一样,重要的不是这个想法有多好,而是围绕它的工具支持。

  类型注释仅适用于工具

  引用自 PEPO484:

  ▋使用类型提示进行性能优化留给读者自行练习。

  考虑到编写PEP时Python的状态,这是可以理解的,但是现在是时候继续了。我们已经成功地转换到Python3,并且PyPi上最常下载包中的359 /360个包也已经兼容Python3。类型提示包已经存在了,并且深受社区喜爱。更进一步,Python类型提示应该带来额外的好处,比如性能优化和自动运行时类型断言。我发现运行时类型断言非常有用(特别是在库中),而且手动写起来很麻烦。对于类型提示,这尤其令人讨厌,因为你必须维护多个类型真源。

  正如其他人所写的,Python 4可能将JIT作为一级特性。这似乎是提出一个逻辑位置来添加性能优化,以此作为对类型注释的响应。

  变量可变性

  我现在对Python最大的抱怨之一是缺少const或类似的东西。在我编写代码时所犯的所有错误中,有固定90%都可以追溯到与类型相关的错误(现在我的程序主要出现此错误)或当我认为我在创建一个新变量时,在同一个函数中意外地重用以前的变量的错误。我知道有处理这些的包,但是我想让const成为首选。

  nbconvert

  nbconvert项目总的来说是令人惊叹的。它允许Jupyter笔记本转换成其他各种格式,包括PDF,Reveal.js幻灯片,或可执行脚本。在过去的几个月里,我广泛地使用了最后两种方法,它们确实改变了我的工作流程。我可以把Jupyter笔记本整理在一起,然后在最后一刻把它们转换成每周和同事开会用的报告,来展示我的进步。同样,我可以在notebook中开发一个想法,然后将其转换为脚本,并以最小的更改将其用于生产环境。

  不管怎样,这就是我的想法。实际情况是,从任何一个大型笔记本中生成的脚本都需要大量的手工转换,因此使用剪切粘贴从头开始编写脚本是值得的。我从一些公司听说,他们已经围绕nbconvert创建了一些包装程序,使之更加实用。我鼓励这些人开源这些贡献,哪怕只是为了减轻我个人的痛苦。

  结论

  许多优秀的人鼓励我写这篇文章,我感谢他们的反馈和支持。如果你不同意,请随时在Iwitter上给我留言。如果你感受到我的痛苦,请在Hacker News讨论区留下你的不满故事。

  脚注

  这些只是我上个月用过的。肯定还有更多完整的列表,例如typeshed type-stubs-request标记。

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:绵阳市涪城区临园路东段68号富临大都会7栋3单元9层12号

联系电话:15023458194

公交路线:富乐路口凯德广场(10路;29路;3路;15路;11路;15a路;71路)

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市人民南路一段86号“城市之心”大厦26楼

联系电话:15023458194

公交路线:成都市人民南路(6路;14路;42路;72路;76路;1010路;)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56