Python 3.9 与 Python 3.10 核心新特性详解

林舟
林舟
发布时间:2026-10-15 | 5人浏览过
原创

本文深入对比 Python 3.9 与 3.10 的关键差异。Python 3.9 引入了 zoneinfo 模块、字典合并运算符 (|, |=) 以及 removeprefix/removesuffix 字符串方法,并支持内置泛型类型提示。Python 3.10 则带来了结构模式匹配 (match-case)、更友好的语法错误提示、使用 | 符号简化联合类型提示,以及多上下文管理器语法。这些更新显著提升了代码的简洁性与可读性。

引言

在过去数十年间,Python 在编程与脚本语言领域确立了重要地位。其备受推崇的核心原因在于极高的用户友好性。同时,Python 也被广泛应用于处理复杂的程序逻辑与编码挑战。

机器学习 (ML)、人工智能 (AI) 和数据科学等新兴领域的爆发,进一步推高了学习 Python 的需求。相较于 Java、C# 等传统语言,Python 展现出强大的生命力,迅速成为开发人员、数据科学家及 AI/ML 爱好者的首选工具。

Python 作为一门编程语言,拥有众多吸引 IT 行业初学者与专家的应用场景。在基础层面,Python 可用于练习数据结构与算法,或开发简单的项目与游戏。

Python 的多功能性使用户能够轻松扩展项目,构建网站、软件或预测模型。随着自动化在 IT 行业的普及,Python 已成为数据分析与数据科学任务自动化的首选语言。

此外,Python 拥有庞大的库生态系统和活跃的开发者社区,他们持续为 Python 语言注入新的价值与功能。

深入理解 Python 及其应用场景

吸引初学者使用 Python 的原因之一是其易用性。Python 摒弃了令人困惑的分号,采用简洁的缩进结构作为语法基础。此外,Python 还常被用作需要可编程接口的应用程序的扩展工具。

Python 的另一大优势在于其丰富的标准库资源,这些库支持多种关键编码任务,包括:

  1. 基于正则表达式的代码处理
  2. 字符串处理
  3. 互联网协议支持,如 HTTP、FTP、SMTP、XML-RPC、POP、IMAP
  4. 统一码 (Unicode) 支持
  5. 文件系统操作及计算文件间差异
  6. CGI 编程
  7. 数学建模
  8. 数据库查询
  9. 数据分析
  10. 数据可视化
  11. 代码自动化

上述所有功能均可在 Unix、Linux、macOS 和 Windows 等主流系统上执行。

深入分析 Python 3.9 与 Python 3.10 的差异

多年来,Python 进行了大量版本升级,并在新版本中添加了诸多功能。本文将聚焦于 Python 3.9 和 3.10 这两个最新版本,探讨其更新功能。了解这些更新有助于您更顺畅地使用 Python,并找到利用新库的更高效工作方式。

下文所有代码仅用于教育目的,内容源自与新版本(如 Python 3.9 和 Python 3.10)一同发布的官方 Python 文档。

Python 3.9 特性详解

IANA 时区数据库支持

在 Python 3.9 中,新增了一个名为 zoneinfo 的模块。通过该模块,您可以访问 IANA(互联网号码分配机构)时区数据库。默认情况下,此模块会使用系统的本地时区数据。

示例代码:


print(datetime(2021, 7, 2, 12, 0).astimezone())
print(datetime(2021, 7, 2, 12, 0).astimezone().strftime("%Y-%m-%d %H:%M:%S %Z"))
print(datetime(2021, 7, 2, 12, 0).astimezone(timezone.utc))

运行结果:


2020-07-2 12:00:00-05:00
2020-07-2 12:00:00 EST
2020-07-2 17:00:00+00:00

字典合并与更新运算符

Python 3.9 引入了一项备受关注的功能:使用运算符直接合并或更新字典。新的合并运算符 ( | ) 和更新赋值运算符 ( |= ) 已被添加到 Python 3.9 的内置 dict 类中。

您可以参考以下代码示例,使用这些运算符来合并或更新字典。

合并操作示例:


>>> a = {‘v': 1, 'art': 2, 'py': 3}
>>> b = {'v': 'd', 'topic': 'python3.9'}

合并结果:


>>> a | b
{'art': 2, 'py': 3, 'v':'d',  'topic': 'python3.9'}
>>> b | a
{'v': 1,'art': 2, 'py': 3, 'topic':'python3.9' }

更新操作示例:


>>> a |= b
>>> a
{'art': 2, 'py': 3,'v':'d'}

字符串前缀与后缀移除

利用 Python 3.9 新增的功能,可以更轻松地解决字符串处理问题。以下代码示例展示了如何从字符串中去除前缀和后缀。示例中使用的新方法包括:

removeprefix():顾名思义,该方法用于移除给定字符串中存在的前缀。removesuffix():该方法用于移除传递给它的字符串中存在的后缀。

由于旧版 strip() 方法在处理特定前缀或后缀时存在局限性,开发者创建了这些新方法以替代它。以下示例代码展示了这两种新方法的实际应用。

示例代码:


print("海拥在外面玩".removeprefix("海拥"))

输出结果:


‘在外面玩'

在 Python 3.9 中对内置泛型类型使用类型提示

Python 3.9 版本启用了所有标准集合的通用语法支持功能,目前已在 typing 模块中可用。泛型类型通常被定义为容器,例如列表。它是一种可轻松参数化的类型。通常,泛型类型具有一种或多种类型参数,而参数化泛型则是具有容器元素的泛型数据类型的特定实例。例如,列表或字典等内置集合类型现在支持直接使用泛型语法,而无需再专门使用 typing.Dict 或 typing.List。

示例代码:


def print_value(input: str): # 指定传递的值将是字符串类型

通过以下方式,我们可以检查输入是否为字符串类型。

Python 3.10 特性详解

结构模式匹配 (Structural Pattern Matching)

Python 3.10 引入了一项名为结构模式匹配的新功能。此匹配过程结合了传统的 case 逻辑,并能与对象进行比较以追踪给定模式。

Python 3.9 的实现方式:


http_code = "419"
if http_code == "200":
    print("OK")
elif http_code == "404":
    print("Not Found Here")
elif http_code == "419":
    print("Value Found")
else:
    print("Code not found")

Python 3.10 的实现方式:


http_code = "419"
match http_code:
    case "200":
        print("Hi")
    case "404":
        print("Not Found")
    case "419":
        print("You Found Me")
    case _:     #Default Case
        print("Code not found")

改进的语法错误消息

许多程序员在错误匹配或调试代码时面临困难。Python 3.10 添加了一个非常用户友好的特性:关联建议。当出现语法错误消息时,系统会提供相关建议,帮助您快速找到存在错误或拼写问题的代码修复方案。

示例代码:


named_car = 77
print(new_car)

输出结果:


NameError: name 'new_car' is not defined. Did you mean: named_car?

更优的类型提示语法

从 Python 3.9 升级至 3.10 后,我们可以不再使用 union 关键字,而是直接使用 OR 符号 ( | ) 来分配参数的多种输入类型。为同一个变量定义多个输入类型变得更加简单直观。

Python 3.9 的实现方式:


def add(a: Union[int, float], b: Union[int, float]):

Python 3.10 的实现方式:


def add(a: int | float, b: int | float):

改进的上下文管理器

上下文管理器有助于处理文件等资源。现在,您可以在单个 with 块中使用多个上下文管理器。这将显著提升代码效率,因为您不再需要嵌套多个块或语句。

旧版语法示例:


with open('output.log', 'rw') 作为 fout:
    fout.write('hello')

新版语法示例:


with (open('output.log', 'w') as fout, open('input.csv') as fin):
    fout.write(fin.read())

至此,关于 Python 3.10 与 Python 3.9 版本差异的介绍已完成。如需了解更多 Python 3.9 与 3.10 版本差异内容,请搜索本站往期文章或继续浏览相关文章。希望大家以后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表