前一篇 Python 3.14 新特性学习(第一部分) 基本就是被 Python 3.14 标准库的多解释器霸屏,所以另起一篇继续 What's new in Python 3.14 中其他几个重要新特性。PEP 765: finally 代码块中的控制流
编译器在检测到 finally 代码块存在return,break, 或continue语句, 会触发 SyntaxWarning. 原因也很简单, 可以反问自己一句, 在 finally 放上 return, break, 或 continue 语句想干什么, 还想跳出 finally 语句块?
用 Python 3.13 和 3.14 测试下面的代码Read More1def foo(): 2 try: 3 ... 4 finally: 5 return 6 print(123) 7 8foo()
在 AI FIRST 的年代到底还要不要对每个所用语言新特性有所了解呢?就像有了 AI 还需要升级 Python 吗?虽然如今在 ChatGPT 中问一句话就能出来一篇比我想要写的好的多的博客,但不多思考怕会退化。
Python 3.14 于 2025 年 10 月 7 日发布,也就是前天,比起 Java 的发布节奏还是慢半拍,所以才能跟得上它的步伐。还是老方法,在官方的 What's new in Python 3.14 中吸收最原始的滋味,完后再去参考别人家的总结。
Python 官方说 Python 3.14 最大的变化包括 t-string(模板字符串),注解的延迟求值,和子解释器的支持(用以使用自由线程)。再就是标准库的变化 asyncio 的内省功能,支持 Zstandard 压缩,以及 REPL 有了语法高亮了.
总体来说这个版本比 Python 3.13 新特性更有亮点,在 Python 3.13 中自由线程是实验性的,在 Python 3.14 可通过子解释器来使用,和自由线程一样,Python 3.13 中的 JIT 需以源代码通过编译选项获得,在 Python 3.14 中 JIT 仍为实验特性,但官方发布的 Python 3.14 二进制版已包含实验性的 JIT 编译器。
Read More
相比于 Java 的每半年一个版本, 跟踪学习 Python 每年一版本要轻松一些. 虽然实际上 Java 是每两年一个 LTS 版, 但它的新特性却是逐个版本释放出来. 也终于赶在 Python 3.14 将在预计的 2025-10-07 发布之前能够学习总结一下当前的 Python 3.13 的新特性.
还是老办法, 从官方的 What's New In Python 3.13 中学习, 所以写作本文的目的就是阅读 What's New In Python 3.13 的学习笔记.
Python 3.13 最大的变化就是 REPL(Read-Evaluate-Print Loop) Python 控制台交互界面, 还有实验性的支持自由线程模型(free-threaded mode) - 即所谓的可禁用全局解释锁(Global Interpreter Lock), 和JIT(Just-In-Time) 编译器. 禁用 GLI 和使用 JIT 都可以让 Python 的执行性能得到提升.更友好的 REPL 交互界面
Python 3.13 的 python 控制台一下子把早先的 bpython 和 ipython 的饭碗给抢了, 虽然 bpython 和 ipython 比 Python 3.13 的 REPL 要强很多, 但毕竟控制台下只是用来随手简单测试 Python 代码, 也就更不太可能单独安装第三方的 bpython 和 ipython 了. Read More
继续感受新特性系列,这次看看于 2023 年 10 月 2 日发布的 Python 3.12 给我们带来了什么新特性。Python 3.14 预计在今年 10 月份推出,一定要对每年一个正式版的新东西有所了解。依旧是由官方的 What's New In Python 3.12 阅读进行展开。
Python 3.12 从编程上的观感变化不大,主要是移除了distutils, 增加了f-strings和type提示,其他对诸如迭代推导等的字节码优化,对性能的提示是不具有直接感受的。Python 3.12 移除了 distutils(Distribution Utilities)
distutils 是一个 Python 内建的构建,打包和分布 Python 模块/包的工具集,其实对于多数应用开发人员对此也是感的。能与此能顺利建立关联的就是有些 Python 项目中的那个 setup.py 文件,那也是史前的产物。随着 Python 的快速流行,Python 的包管与构建工具也多了起来, 像 Poetry, PDM 和 uv, 尤其是 uv(Rust 编写的) 的闪电速度及全能表现有望成为 Python 界的 Maven。 Read More
前面整一篇只讲了 Python 3.11 的新语法特性,异常组与except*, 这篇说其他的。可为异常添加备注
在 BaseException 上新加了一个实例方法 add_note(self, note),在捕获到异常后可进一步润色而无需创建一个新的异常再次抛出。内置 tomllib 支持 TOML 配置文件
TOML 是 Tom's Obvious Minimal Language, 像 INI 文件,但表述性更强,支持丰富的数据类型。现代新型的 Python 项目依赖管理构建工具都使用了 pyproject.toml 文件,如 Poetry, uv, 以及 PDM。pyproject.toml 在 Python 3.6 就引入了,见 PEF 518,但似乎一直被顽固的 Python -m venv 忽略。
从 Python 3.11 开始新加了对 TOML 配置文件的编程接口,像使用 JSON 和 Pickle 一样的 load() 和 loads() 反序列方法,没有序列化方法 Read More
还是在三年前记录的 Python 3.10 关键新特性,一晃 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", 到的结果无疑是漂亮的,但只粗略一读,并无半点体会。
学习 Python 3.11 新特性的入口是官方的 What's New In Python 3.11. 同时结合 Google 的相关资料,拣些确实对自己有大益处的学。
官方说的 Python 3.11 比 Python 3.10 要快个 10-60% 估计不是我们升级 Python 的主要动力,一般来说语言或组件能升级的话尽量跟着形势跑,不然越是滞后便越难升级,最终只能原地等死。 Read More