冒着疏远这本杂志的大多数读者的风险,这里有一个供词。我讨厌 Python 很长一段时间。我的问题不在于语言本身,即使缩进规则让我失望了一段时间。不,我让自己远离 Python 的原因是不幸接触了一些(对我来说太多了)傲慢自大的 Python 开发人员。嗯,那个,以及 Python 2 和 3 之间的过渡的无人区。当然,这是不幸的。但几年后,实用主义自然又把我带回了 Python;与其说是语言本身,我现在既不喜欢也不讨厌,而是可用库的数量(及其出色的质量)。引起人们对 Python 重新产生兴趣的另一个重要因素是人们期待已久的 Python 2 弃用公告。这一事件标志着语言的一个主要成熟点,也是一个迫切需要的。 Python 的生态系统非常出色,机器学习的兴起巩固了其作为新 Fortran 的地位,同时它也成为了新的伪代码,甚至是新的 BASIC。如今,开发人员忽视 Python 不仅很难,而且是不明智的。本文是对在线和离线媒体进行六个月探索的产物,旨在了解 Python 已渗透到我们的工艺中。结果连这位作者都感到意外。 Python 不仅无处不在,它已成为计算机行业的“默认”编程语言。如上所述,让我接触 Python 的第一件事是它的库。我需要完成工作(谁不做?)而 Python 正好拥有我需要的库。它的标准 csv 包是我大约 20 年前探索和使用的第一个包;接下来是 argparse、doctest 和 shutil,它们都是标准库的一部分。操作 CSV 格式的数据需要我将其导出为其他格式; Python-OpenXML 提供了第一个解决方案,后来通过 Pandas 进行了增强以操作 Excel 文件。渐渐地,我开始越来越多地使用 Python。在某个时候,我得到了一份 Django 应用程序开发人员的工作,这是一个夸大其词的框架“为有截止日期的完美主义者”;一个充满傲慢和不应有的优点的妙语。值得庆幸的是,如今云原生 Python 应用程序是围绕不那么单一的选项构建的,例如 Flask、Pyramid 或 Tornado。
在 IDE 方面,PyCharm、Spyder 或 Wing 正在争取开发人员的注意力,其中许多人正在迁移到带有 Microsoft 自己的 Python 扩展的 Visual Studio Code(顺便说一下,他们最近对 Python 生态系统非常感兴趣)。开发人员可能有兴趣使用 mypy、Flake8 或 Pylint 来检查他们的代码质量。大多数 Python 脚本在命令行中开始和结束它们的生命。但是对于那些对提供 GUI 感兴趣的人来说,选择比比皆是:用于触摸屏应用程序的 Kivy、古老的 wxPython、强大的 Python 的 Qt,以及它经常被忽视的兄弟 PySide2。在频谱的实验部分,REMi 和 Gooey 值得特别提及;前者将脚本转换为成熟的 Web 应用程序,后者将任何 CLI 脚本转换为桌面 GUI 应用程序。 Python 还与其他语言和运行时具有很强的互操作性。只需提及 SWIG 和 Boost.Python,就可以实现与 C 和 C++ 的互操作性;和 Jython,使其能够在 JVM 中使用——在撰写本文时仍然缺乏对 Python 3 的支持。说到该语言的替代实现,还必须提到由 Guido van Rossum 推荐的 PyPy 和用于 .NET 的 IronPython,其 Python 3 alpha 实现最近发布。 Python 是包管理器和构建系统的沃土:Conan、Poetry、Wheels、redo(递归构建系统),当然还有古老的 pip,以及最近的 pipx(相当于 JavaScript 的 npx 命令)。最近许多突破性的想法都由 Python 提供支持:Ansible;海鞘; Atheris 代码覆盖工具; authentik(Keycloak 的替代品);解析 HTML 的 Beautiful Soup;凹凸版本; Celery 用于分布式队列处理;点击和Typer替换argparse;饼干刀; Depix 从像素化屏幕截图中恢复密码;图表; Ecco 探索 NLP 模型;一目了然地监控您的服务器; GOMP 比较 Git 分支;冰淇淋; jrnl 写你的日记; lorem 创建占位符文本; Outrun 在单独的机器上运行命令;操作图像的枕头; pdoc 生成 API 文档; PyGithub; pyyaml;二维码;彩虹流;拉马努金机;对您的 HTTP 需求的请求;丰富的控制台文本格式; TOML 因为没有足够的配置语言;秃鹫寻找死代码; youtube-dl 在线下载视频;微信矩阵协议客户端;我在哪里; Whoosh 搜索库;还有更多。
如果 Rust 似乎是大改写的语言,那么 Python 绝对是第一个版本的语言。在过去的十年中,Python 单句柄取代了 Fortran,成为科学计算的首选编程语言。这一切都始于 Numpy,然后是 Jupyter notebooks,这个概念松散地基于 Knuth 的文学编程思想。紧随其后的是 Anaconda、SciPy、PyTorch,剩下的就是历史了。特别是,机器学习的流行在很大程度上归功于这些工具的预先存在。安装 Python 仍然是一项艰巨的任务,通常是生态系统新手的最大障碍,尤其是考虑到网上有大量相互矛盾的建议。愿本节消除一些混淆,通过作者在不同环境中安装 Python 所使用的经过验证的技术。 Windows 用户可以简单地使用 Chocolatey 来安装他们的 Python 环境,并准备好使用。不使用 Homebrew 可以更好地为 Mac 用户服务;本文作者衷心建议 Mac 和 Linux 用户使用 pyenv 代替。无论您使用哪种技术来安装 Python,请始终为每个项目使用一个虚拟环境。这确保它们是自包含的,具有明确定义的依赖关系,并保证可以在其他人的计算机上工作。 $ python3 -m venv .venv$ source .venv/bin/activate$ pip install PyYAML$ pip install PyGithub$ pip freeze > requirements.txt# 稍后...$ pip install -r requirements.txt 虚拟环境也可以帮助开发者获得他们在 Docker 容器中的代码很容易;请记住将 --no-cache-dir 选项传递给 Dockerfiles 中的 pip install。永远不要忘记在你的项目中添加一个合适的 .gitignore 文件。
学习 Python 的材料并不缺乏。以下书籍可以作为起点,按指定的顺序: 如果您对在线教程感兴趣,我在这里只会提到 Python 基础知识和真正的 Python,但简短的 DuckDuckGo 搜索将带来更多资源。 Python 的创造者,也被称为“终生仁慈的独裁者”,有着相当辉煌的职业生涯,受到媒体的密切关注。在过去的 15 年里,他一直在 Google 和 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;本身就是优秀的工具,但被更流行的选项所掩盖。 reStructuredText 也通常被驳回,开发人员通常更喜欢 Markdown 或 Asciidoc。尽管如此,Python 还是成为了让开发人员发笑的无尽素材。 Python 有禅意。 Python 让开发人员歌唱。 Texas Instrument TI-84 Plus CE-T Python 版计算器可以编辑和运行 Python 代码。人们在 Excel 电子表格中使用 Python 而不是 VBA。他们使用 Python 创建 Gimp 插件或渲染电影。他们用它编写无服务器应用程序以在 5 分钟内处理 558K 事务。它在 2007、2010、2018 和 2020 年被评为 TIOBE 年度编程语言。其语法已从英语翻译成德语、中文、爪哇语、立陶宛语、西班牙语、瑞典语和俄语等。人们问自己WTF Python。
尽管我不再讨厌 Python,但每次我在 REPL 中输入 quit 并得到音调失灵的“使用退出()或 Ctrl-D(即 EOF)退出”消息时,我仍然会面对面掌。