2021 python 现状

回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

2021 python 现状

#1

帖子 shaoziyang »

来自:https://deprogrammaticaipsum.com/the-st ... n-in-2021/

冒着疏远大多数读者的危险,这里有一个陈述,我很长一段时间都讨厌Python。我的问题不在于语言本身,尽管缩进规则让我有一段时间难以适从。不,我之所以远离Python,是因为我与一些傲慢的Python开发人员进行了不幸的接触(对我来说太多了)。好吧,那就是无人区,那是Python 2和Python 3之间的过渡。

这当然是不幸的。但几年后,实用主义自然又把我带回Python;与其说是语言本身,我现在既不喜欢也不讨厌,还不如说是可用库的数量(以及它们卓越的质量)。对Python重新产生兴趣的另一个重要因素是人们期待已久的Python2被弃用的消息;这一事件标志着语言的一个主要成熟点,也是一个迫切需要的成熟点。

Python周围的生态系统非常出色,机器学习的兴起巩固了它作为新Fortran的地位,同时它也成为了新的伪代码,甚至是新的基本代码。

如今,开发人员忽视Python不仅困难,而且是不明智的。本文是在线和离线媒体六个月探索的产物,旨在了解Python在我们的工艺中渗透了多少。结果甚至对这位作者来说都是一个惊喜。Python不仅无处不在,它已经成为计算机行业的“默认”编程语言。


生态系统

如上所述,将我带入Python的第一件事是它的库。我需要完成一些事情(谁不是这样呢),Python正好有我需要的库。它的标准csv软件包是我近20年前第一次深入探索和使用的软件包;接下来是argparse、doctest和shutil,它们都是标准库的一部分。

以CSV格式操作数据需要我将其导出为其他格式;PythonOpenXML提供了第一个解决方案,后来通过Pandas对其进行了增强以操作Excel文件。

渐渐地,我开始越来越多地使用Python。在某个时候,我得到了一份Django应用程序开发人员的工作,这是一个浮夸地推销的“针对有期限的完美主义者”的框架;充满傲慢和不应有的优点的笑话。谢天谢地,现在的云计算原生Python应用程序是围绕烧Flask,、Pyramid、Tornado等构建的。

就IDE而言,PyCharm、Spyder或Wing正在争取开发人员的注意,其中许多人正在使用Microsoft自己的Python扩展迁移到Visual Studio代码(顺便说一句,他们最近对Python生态系统非常感兴趣)。

开发人员可能有兴趣使用mypy、Flake8或Pylint来检查代码的质量。

大多数Python脚本在命令行中开始和结束其生命。但对于那些对提供GUI感兴趣的人来说,有很多选择:用于触摸屏应用程序的Kivy、久负盛名的wxPython、用于Python的强大Qt,以及它经常被忽视的兄弟PySide2。在光谱的实验部分,REMi和Gooey值得特别提及;前者将脚本转换为成熟的web应用程序,后者将任何CLI脚本转换为桌面GUI应用程序。

Python还与其他语言和运行时具有很强的互操作性。只要提到SWIG和Booost .python,就可以实现与C和C++的互操作性;和Jython,使其能够在JVM中使用——在撰写本文时仍然缺乏对Python 3的支持。

说到该语言的替代实现,我们还必须提到PyPy,Guido van Rossum推荐PyPy的速度,以及IronPython for.NET,后者的Python3 alpha最近发布。

Python是包管理器和构建系统的沃土:Conan、Poetry、Wheels、redo(递归构建系统),当然还有令人尊敬的pip,以及最近的pipx(相当于JavaScript的npx命令)。

最近Python支持了许多开创性的想法: Ansibleasciinema;Atheris代码覆盖工具;authentik(Keycloak的替代品);Beautiful Soup 解析HTML; bump2versionCelery,用于分布式队列处理; Click 和 Typer 替换argparse; CookiecutterDepix 从像素化屏幕截图中恢复密码; DiagramsEcco 浏览NLP模式; Glances 监视您的服务器; GOMP 比较Git分支; IceCreamjrnl 写日记; lorem 创建占位符文本;Outrun 在单独的机器上运行命令; Pillow 操作图像;pdoc 生成API文档; PyGithubPyYAMLqrcoderainbowstreamRamanujan MachineRequests 用于HTTP; Rich 用于在控制台中格式化文本; TOML,因为没有足够的配置语言;Vulture 寻找无用代码;youtube-dl 下载在线视频;Weechat 协议客户端;whereami;  Whoosh 搜索库;还有更多。

如果Rust用于重写语言,那么Python肯定是第一个版本的语言。


机器学习与科学计算

在过去十年中,Python single handledy取代Fortran成为科学计算的首选编程语言。这一切都始于Numpy,然后是Jupyter notebooks,这是一个松散地基于Knuth的识字编程思想的概念。紧随其后的是 Anaconda, SciPy, PyTorch,其余的都是历史。特别是,机器学习的普及在很大程度上归功于这些工具的存在。


获取Python

安装Python仍然是一项不平凡的任务,而且通常是新加入生态系统的开发人员面临的最大障碍,特别是考虑到网上有大量相互矛盾的建议。本节希望通过作者在不同环境中安装Python时使用的经过验证的技术,消除一些混淆。

Windows用户只需使用Chocolate即可安装他们的Python环境并准备好使用。Mac用户最好不使用自制软件;本文作者衷心建议Mac和Linux用户使用pyenv。

无论您使用哪种技术来安装Python,都要为每个项目使用一个虚拟环境。这确保了它们是自包含的,具有定义良好的依赖关系,并保证在其他人的计算机中工作。

代码: 全选

$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip install PyYAML
$ pip install PyGithub
$ pip freeze > requirements.txt

# Later on...
$ pip install -r requirements.txt
虚拟环境还可以帮助开发人员轻松地将代码放入Docker容器中;记住将--no cache dir选项传递给DockerFile中的pip安装。永远不要忘记向项目中添加适当的.gitignore文件。


学习Python

学习Python的资料并不缺乏。以下书籍可作为起点,顺序如下: 如果对在线教程感兴趣,在这里只提到Python基础知识和真正的Python,但是一个简短的DuckDuckGo搜索将带来更多的资源。


吉多·范罗苏姆

python的创造者,也被称为“一生仁慈的独裁者”,在媒体的密切关注下,有着相当辉煌的职业生涯。在过去的15年里,他一直在谷歌和Dropbox之间度过。在前者中,他为Mondrian代码审查工具的创建做出了贡献,该工具于2006年编写,以取代基于邮件的工作流。后来,他推出了第一个流行的PaaS,Google AppEngine,当然,它的第一个运行环境是Python。

一个奇怪的事实:Python还没有出现在Jean Sammet创建的HOPL会议中。非常有趣的是,Van Rossum先生于2006年开始撰写这篇论文,将在HOPL III上发表,但经过多次修改,他用这篇文章创建了一个关于Python历史的新博客。

继谷歌之后,Van Rossum先生从2013年到2019年10月退休,进入Dropbox。在撰写本文时,据说他在mypy静态类型检查器工作——或者至少,项目博客上是这么说的。


更多

当然,并非所有用Python开发的东西都是成功的。只要提到GadflyB5 SQL关系数据库或Mercurial就足够了;优秀的工具本身就很好,但被更流行的选项所遮蔽。StructuredText也通常被忽略,开发人员通常更喜欢Markdown或Ascidoc。

尽管如此,Python还是让开发人员不停发笑。有python之禅、Python让开发人员歌唱。Texas Instrument TI-84 Plus CE-T Python Edition计算器可以编辑和运行Python代码。人们在Excel电子表格中使用Python而不是VBA。他们使用Python创建Gimp插件或渲染电影。他们用它编写无服务器应用程序,在5分钟内处理558K事务。它在2007年、2010年、2018年和2020年被评为年度TIOBE编程语言。它的语法已经从英语翻译成德语、汉语、爪哇语、立陶宛语、西班牙语、瑞典语和俄语等。人们问自己WTF Python

尽管我不再讨厌Python,但每次我在REPL中键入quit时并收到“Use quit() or Ctrl-D (i.e. EOF) to exit”时,我仍然会捂脸🤦‍。
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章