<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Python New Features on 隔叶黄莺 Yanbin's Blog - 软件编程实践</title><link>https://yanbin.blog/series/python-new-features/</link><description>Recent content in Python New Features on 隔叶黄莺 Yanbin's Blog - 软件编程实践</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>yabqiu@gmail.com (Yanbin Qiu)</managingEditor><webMaster>yabqiu@gmail.com (Yanbin Qiu)</webMaster><copyright>Yanbin 隔叶黄莺</copyright><lastBuildDate>Sun, 19 Oct 2025 00:43:57 -0500</lastBuildDate><atom:link href="https://yanbin.blog/series/python-new-features/index.xml" rel="self" type="application/rss+xml"/><item><title>Python 3.14 新特性学习(第二部分)</title><link>https://yanbin.blog/python-3-14-new-features-2/</link><pubDate>Sun, 19 Oct 2025 00:43:57 -0500</pubDate><author>yabqiu@gmail.com (Yanbin Qiu)</author><guid>https://yanbin.blog/python-3-14-new-features-2/</guid><description>
前一篇 &lt;a href="https://yanbin.blog/python-3-14-new-features-1/"&gt;Python 3.14 新特性学习(第一部分)&lt;/a&gt; 基本就是被 Python 3.14 标准库的多解释器霸屏，所以另起一篇继续 &lt;a href="https://docs.python.org/3.14/whatsnew/3.14.html"&gt;What's new in Python 3.14&lt;/a&gt; 中其他几个重要新特性。&lt;br/&gt;&lt;br/&gt;
&lt;h3&gt;PEP 765: finally 代码块中的控制流&lt;/h3&gt;
编译器在检测到 finally 代码块存在 &lt;code&gt;return&lt;/code&gt;, &lt;code&gt;break&lt;/code&gt;, 或 &lt;code&gt;continue&lt;/code&gt; 语句, 会触发 SyntaxWarning. 原因也很简单, 可以反问自己一句, 在 finally 放上 return, break, 或 continue 语句想干什么, 还想跳出 finally 语句块?&lt;br/&gt;&lt;br/&gt;
用 Python 3.13 和 3.14 测试下面的代码&lt;br/&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;123&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Python 3.14 新特性学习(第一部分)</title><link>https://yanbin.blog/python-3-14-new-features-1/</link><pubDate>Sat, 18 Oct 2025 11:57:01 -0500</pubDate><author>yabqiu@gmail.com (Yanbin Qiu)</author><guid>https://yanbin.blog/python-3-14-new-features-1/</guid><description>
在 AI FIRST 的年代到底还要不要对每个所用语言新特性有所了解呢？就像有了 AI 还需要升级  Python 吗？虽然如今在 ChatGPT 中问一句话就能出来一篇比我想要写的好的多的博客，但不多思考怕会退化。&lt;/p&gt;
&lt;br/&gt;
Python 3.14 于 2025 年 10 月 7 日发布，也就是前天，比起 Java 的发布节奏还是慢半拍，所以才能跟得上它的步伐。还是老方法，在官方的 &lt;a href="https://docs.python.org/3.14/whatsnew/3.14.html"&gt;What's new in Python 3.14&lt;/a&gt; 中吸收最原始的滋味，完后再去参考别人家的总结。&lt;br/&gt;&lt;br/&gt;
Python 官方说 Python 3.14 最大的变化包括 t-string(模板字符串)，注解的延迟求值，和子解释器的支持(用以使用自由线程)。再就是标准库的变化 asyncio 的内省功能，支持 Zstandard 压缩，以及 REPL 有了语法高亮了.&lt;br/&gt;&lt;br/&gt;
总体来说这个版本比 Python 3.13 新特性更有亮点，在 Python 3.13 中自由线程是实验性的，在 Python 3.14 可通过子解释器来使用，和自由线程一样，Python 3.13 中的 JIT 需以源代码通过编译选项获得，在 Python 3.14 中 JIT 仍为实验特性，但官方发布的 Python 3.14 二进制版已包含实验性的 JIT 编译器。&lt;br/&gt;&lt;br/&gt;</description></item><item><title>Python 3.13 新特性学习</title><link>https://yanbin.blog/python-3-13-new-features/</link><pubDate>Sun, 28 Sep 2025 18:48:43 -0500</pubDate><author>yabqiu@gmail.com (Yanbin Qiu)</author><guid>https://yanbin.blog/python-3-13-new-features/</guid><description>
相比于 Java 的每半年一个版本, 跟踪学习 Python 每年一版本要轻松一些. 虽然实际上 Java 是每两年一个 LTS 版, 但它的新特性却是逐个版本释放出来. 也终于赶在 Python 3.14 将在预计的 2025-10-07 发布之前能够学习总结一下当前的 Python 3.13 的新特性.&lt;/p&gt;
&lt;br/&gt;
还是老办法, 从官方的 &lt;a href="https://docs.python.org/3/whatsnew/3.13.html"&gt;What's New In Python 3.13&lt;/a&gt; 中学习, 所以写作本文的目的就是阅读 What's New In Python 3.13 的学习笔记.&lt;br/&gt;&lt;br/&gt;
Python 3.13 最大的变化就是 REPL(Read-Evaluate-Print Loop) Python 控制台交互界面, 还有实验性的支持自由线程模型(free-threaded mode) - 即所谓的可禁用全局解释锁(Global Interpreter Lock), 和JIT(Just-In-Time) 编译器. 禁用 GLI 和使用 JIT 都可以让 Python 的执行性能得到提升.&lt;br/&gt;&lt;br/&gt;
&lt;h3&gt;更友好的 REPL 交互界面&lt;/h3&gt;
Python 3.13 的 python 控制台一下子把早先的 &lt;a href="https://bpython-interpreter.org/"&gt;bpython&lt;/a&gt; 和 &lt;a href="https://ipython.org/"&gt;ipython&lt;/a&gt; 的饭碗给抢了, 虽然 bpython 和 ipython 比 Python 3.13 的 REPL 要强很多, 但毕竟控制台下只是用来随手简单测试 Python 代码, 也就更不太可能单独安装第三方的 bpython 和 ipython 了.</description></item><item><title>Python 3.12 新特性</title><link>https://yanbin.blog/python-3-12-new-features/</link><pubDate>Tue, 05 Aug 2025 17:26:18 -0500</pubDate><author>yabqiu@gmail.com (Yanbin Qiu)</author><guid>https://yanbin.blog/python-3-12-new-features/</guid><description>
继续感受新特性系列，这次看看于 2023 年 10 月 2 日发布的 Python 3.12 给我们带来了什么新特性。Python 3.14 预计在今年 10 月份推出，一定要对每年一个正式版的新东西有所了解。依旧是由官方的 &lt;a href="https://docs.python.org/3/whatsnew/3.12.html"&gt;What's New In Python 3.12&lt;/a&gt; 阅读进行展开。&lt;/p&gt;
&lt;br/&gt;
Python 3.12 从编程上的观感变化不大，主要是移除了 &lt;code&gt;distutils&lt;/code&gt;, 增加了 &lt;code&gt;f-strings&lt;/code&gt; 和 &lt;code&gt;type&lt;/code&gt; 提示，其他对诸如迭代推导等的字节码优化，对性能的提示是不具有直接感受的。&lt;br/&gt;&lt;br/&gt;
&lt;h3&gt;Python 3.12 移除了 distutils(Distribution Utilities)&lt;/h3&gt;
distutils 是一个 Python 内建的构建，打包和分布 Python 模块/包的工具集，其实对于多数应用开发人员对此也是感的。能与此能顺利建立关联的就是有些 Python 项目中的那个 setup.py 文件，那也是史前的产物。随着 Python 的快速流行，Python 的包管与构建工具也多了起来， 像 &lt;a href="https://python-poetry.org/"&gt;Poetry&lt;/a&gt;, &lt;a href="https://pdm-project.org/"&gt;PDM&lt;/a&gt; 和 &lt;a href="https://docs.astral.sh/uv/"&gt;uv&lt;/a&gt;, 尤其是 uv(Rust 编写的) 的闪电速度及全能表现有望成为 Python 界的 Maven。</description></item><item><title>Python 3.11 关键新特性之其他</title><link>https://yanbin.blog/python-3-11-key-new-features-others/</link><pubDate>Sat, 21 Jun 2025 18:25:47 -0500</pubDate><author>yabqiu@gmail.com (Yanbin Qiu)</author><guid>https://yanbin.blog/python-3-11-key-new-features-others/</guid><description>
前面整一篇只讲了 Python 3.11 的新语法特性，异常组与 &lt;code&gt;except*&lt;/code&gt;, 这篇说其他的。&lt;/p&gt;
&lt;h3&gt;可为异常添加备注&lt;/h3&gt;
在 BaseException 上新加了一个实例方法 add_note(self, note)，在捕获到异常后可进一步润色而无需创建一个新的异常再次抛出。&lt;br/&gt;
&lt;h3&gt;内置 &lt;a href="https://docs.python.org/3/library/tomllib.html#module-tomllib"&gt;tomllib&lt;/a&gt; 支持 &lt;a href="https://toml.io/"&gt;TOML&lt;/a&gt; 配置文件&lt;/h3&gt;
TOML 是 Tom's Obvious Minimal Language, 像 INI 文件，但表述性更强，支持丰富的数据类型。现代新型的 Python 项目依赖管理构建工具都使用了 pyproject.toml 文件，如 &lt;a href="https://python-poetry.org/"&gt;Poetry&lt;/a&gt;, &lt;a href="https://docs.astral.sh/uv/"&gt;uv&lt;/a&gt;, 以及 &lt;a href="https://pdm-project.org/"&gt;PDM&lt;/a&gt;。pyproject.toml 在 Python  3.6 就引入了，见 &lt;a href="https://peps.python.org/pep-0518/"&gt;PEF 518&lt;/a&gt;，但似乎一直被顽固的 Python -m venv 忽略。&lt;br/&gt;&lt;br/&gt;
从 Python 3.11 开始新加了对 TOML 配置文件的编程接口，像使用 JSON 和 Pickle 一样的 load() 和 loads() 反序列方法，没有序列化方法</description></item><item><title>Python 3.11 关键新特性之异常组与 except*</title><link>https://yanbin.blog/python-3-11-key-new-features-exception-group-except-star/</link><pubDate>Sat, 21 Jun 2025 11:00:15 -0500</pubDate><author>yabqiu@gmail.com (Yanbin Qiu)</author><guid>https://yanbin.blog/python-3-11-key-new-features-exception-group-except-star/</guid><description>
还是在三年前记录的 &lt;a href="https://yanbin.blog/python-3-10-new-features/"&gt;Python 3.10 关键新特性&lt;/a&gt;，一晃 Python 3.13 都出来了。Python 遵循着主版本每 12 个一更新，并提供 5 年支持的节奏。所以自 Python 3.10 于 2021 年 10 月发布以来，又有了 3.11, 3.12, 3.13，还得紧紧跟一跟，踏实的了解每个版本新特性，总由着 AI 帮忙恐难得到自己想要的最优代码。学习必要实践，不然在 Google 或是 ChatGPT 中一问 "Python 3.11 key new features", 到的结果无疑是漂亮的，但只粗略一读，并无半点体会。&lt;/p&gt;
&lt;br/&gt;
学习 Python 3.11 新特性的入口是官方的 &lt;a href="https://docs.python.org/3/whatsnew/3.11.html"&gt;What's New In Python 3.11&lt;/a&gt;. 同时结合 Google 的相关资料，拣些确实对自己有大益处的学。&lt;br/&gt;&lt;br/&gt;
官方说的 Python 3.11 比 Python 3.10 要快个  10-60% 估计不是我们升级 Python 的主要动力，一般来说语言或组件能升级的话尽量跟着形势跑，不然越是滞后便越难升级，最终只能原地等死。</description></item></channel></rss>