【Python】一起来看看Python 3.14 中的5大特性吧

Python 3.14 预发布版已经来了!这是 Python 社区计划的 7 个版本中的第 3 个 alpha 版本,我简直按捺不住激动的心情。

Python 在市场上已经存在相当长一段时间了,作为一名 Python 开发者,我非常兴奋地告诉大家,Python 正在通过每个新版本逐步进行重大更新。

就在几个月前,我们看到了 Python 3.13 发布时关于 可选 GIL 更改 的重大更新,而我还没从那个激动中缓过来。你可以在这里阅读更多关于 GIL 的更新 —— GIL 不复存在

Python 的最新版本 3.14 带来了一些重大改进,我将在下面列出这些更新。我已经将这次新版本中发布的五大更新整理好了。

1. 重新加载 Python 环境

os.environos.environb 保存了 Python 程序开始时定义的环境变量缓存。

问题在于,当某些环境变量在 Python 脚本之外被更新时,这些缓存并不会自动刷新。

我们都知道 Python 开发者喜欢挑战。Python 社区一直在努力解决这个问题,现在他们带来了好消息。

Python 3.14 中 os 模块的最新更新之一是,通过使用一个新添加的内置函数 os.reload_environ(),可以更新 os.environ 为最新的值。

以下是它的用法 ——


Python 3.14.0a3 (tags/v3.14.0a3:401bfc6, Dec 17 2024, 10:58:10) [MSC v.1942 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import os

>>> os.environ = os.reload_environ()

>>>

现在,开发者可以使用 reload_environ() 方法将 os.environ 更新为最新的值。

我现在正一边喝着肉桂茶 🍵,一边重新加载我的环境。

注意:****reload_environ() 函数不是线程安全的。如果在另一个线程中修改环境时调用它,行为是未定义的。

2. 不再急切求值注解

在深入这个特性之前,我们先问一个非常重要的问题 ——

什么是注解?

注解 是 Python 代码的一部分,用于提供元数据并支持类型提示。注解提供了关于变量、函数参数和返回值的信息。

照片由 Kelly Sikkema 拍摄,来自 Unsplash

注解帮助程序员添加元数据,说明哪些变量可能期望什么类型的值。

例如 ——


>>> def addition(num1: int, num2: float) -> float:

...   return num1 + num2

  

上面的 addition() 函数使用注解定义了参数和返回类型。

以前,Python 会急切地求值注解。现在,这一点已经改变了。

从 Python 3.14 开始,注解被存储在特殊的 注解函数 中,只有在需要时才会被求值。

这有什么好处?

这一变化旨在使 Python 中的注解在大多数情况下更高效、更实用。

新的 annotationlib 模块提供了检查延迟注解的工具。

注解可以通过以下三种格式进行求值 ——

1. VALUE — 将注解求值为运行时值,类似于早期 Python 版本的行为。

2. FORWARDREF — 这种格式会用特殊标记替换未定义的名称。

3. STRING — 将注解作为字符串返回。

以下示例展示了这些格式的行为 ——


>>> from annotationlib import get_annotations, Format

>>> def func(arg: Undefined):

...   pass

...

>>> get_annotations(func, format=Format.VALUE)

Traceback (most recent call last):

 File "<python-input-10>", line 1, in <module>

  get_annotations(func, format=Format.VALUE)

  ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^

 File "C:\Users\varun\AppData\Local\Programs\Python\Python314\Lib\annotationlib.py", line 707, in get_annotations

  ann = _get_dunder_annotations(obj)

 File "C:\Users\varun\AppData\Local\Programs\Python\Python314\Lib\annotationlib.py", line 847, in _get_dunder_annotations

  ann = getattr(obj, "__annotations__", None)

 File "<python-input-9>", line 1, in __annotate__

  def func(arg: Undefined):

         ^^^^^^^^^

NameError: name 'Undefined' is not defined

  

>>> get_annotations(func, format=Format.FORWARDREF)

{'arg': ForwardRef('Undefined')}

  

>>> get_annotations(func, format=Format.STRING)

{'arg': 'Undefined'}

3. map() 方法中的数组长度检查

在 Python 中,map() 函数的作用类似于循环。它接受一个函数和一个可迭代对象(如列表或元组)作为输入。

对于可迭代对象中的每个元素,map() 都会对其应用给定的函数。这会创建一个新的可迭代对象,其中包含每个函数调用的结果。

本质上,map() 是一种方便的方式,可以对集合中的每个元素应用相同的操作。

以前,你会这样写 map() 功能 ——


>>> def mul(a, b):

...   return a * b

...

>>> l1 = [1, 2, 3, 4]

>>> l2 = [5, 6, 7]

>>> result=list(map(mul,l1,l2))

[5, 12, 21]

这里,l2 包含 3 个元素,而 l1 有 4 个元素。在 Python 3.14 中,可以通过使用 strict=True 标志来更好地处理这种情况 ——


>>> def mul(a, b):

...   return a * b

...

>>> l1 = [1, 2, 3, 4]

>>> l2 = [5, 6, 7]

>>> result=list(map(mul,l1,l2, strict=True))

Traceback (most recent call last):

 File "<python-input-33>", line 1, in <module>

  result=list(map(mul,l1,l2, strict=True))

ValueError: map() argument 2 is shorter than argument 1

4. 解包值 —— 改进的错误信息

对于 Python 开发者来说,当你编写代码并遇到错误时,错误信息是帮助你找出代码问题的关键。

改进的错误信息让你的生活变得更加轻松,尤其是在与早期 Python 版本相比时。

举个例子,考虑以下代码,解包失败时 ——


>>> item1, item2, item3 = 1, 2, 3, 4

Traceback (most recent call last):

 File "<python-input-0>", line 1, in <module>

  item1, item2, item3 = 1, 2, 3, 4

  ^^^^^^^^^^^^^^^^^^^

ValueError: too many values to unpack (expected 3, got 4)

现在,你会得到一个更详细的错误信息 —— ValueError: too many values to unpack (expected 3, got 4)

在过去的几个 Python 版本中,错误信息有了很多改进,你可以在这篇文章中了解更多 ——

5. 两个新的运算符方法

Python 3.14 带来了两个新的运算符方法 ——

1. operator.is_none()

2. operator.is_not_none()

operator.is_none(obj) 等同于 obj is None,而 operator.is_not_none(obj) 等同于 obj is not None

希望你喜欢阅读这篇文章!

### Python 3.14 版本特性 Python 3.14引入了一系列改进和新特性,旨在提升编程体验并增强语言的功能。值得注意的是,在此版本中继续推进了对旧有特性的移除以及对现代计算需求的支持。 #### 新增功能与优化 - **PEP 678**:允许在 `__import__` 函数中传递额外的关键字参数来控制导入行为[^1]。 - **更严格的语法检查**:增强了编译器对于非法字符组合的检测能力,减少了潜在错误的发生概率。 - **性能改进**:通过内部实现细节上的调整提高了解释器执行效率,特别是在处理量数据结构操作时表现更为明显。 #### 安装指南 (Windows) 为了确保最佳兼容性和安全性,建议从官方网站下载最新稳定版安装包进行安装: 1. 访问 [Python官网](https://www.python.org/downloads/release/python-314/) 2. 下载适用于 Windows 的可执行文件(.exe),双击运行安装向导 3. 勾选 "Add Python to PATH" 复选框以便于命令行调用 4. 跟随提示完成剩余步骤即可成功安装 Python 3.14 环境 ```bash # 测试是否正确安装 python --version ``` #### 使用教程概览 ##### 创建虚拟环境 创建独立的工作空间有助于管理不同项目的依赖关系而不互相干扰。 ```bash # 安装 virtualenv 工具(如果尚未安装) pip install virtualenv # 进入目标目录后创建名为 &#39;venv&#39; 的虚拟环境 virtualenv venv # 激活该虚拟环境 .\venv\Scripts\activate.ps1 # PowerShell下激活方式 ``` ##### 编写简单程序 下面是一个简单的 Hello World 应用实例,展示了如何利用 Python 输出信息到终端窗口。 ```python print("Hello, world!") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值