作者 | Sara A. Metwalli

译者 | 有数可据

出品 | CSDN(ID:CSDNnews)

新的 Python 版本推出了有趣的新功能。

Python 是当今最流行的编程语言之一。它有广泛的领域和应用,从学习计算机科学的基础,到执行复杂或者直接的科学计算任务来创建游戏。它的高级应用甚至包含数据科学和量子计算。

Python的流行有很多原因。其中最主要的原因是Python和其他语言相比,通用性强,简单易学。除此之外,Python的开发和维护者——Python软件基金会——一直致力于用新的方法改进Python。

一周之前(2021年10月4日),一个新的Python版本发布了,Python 3.10。在新的版本中,Python 添加了独特且有价值的功能,同时删除了一些旧功能。我们可以将任何新软件版本中添加或删除的功能归为多个类别,例如语法特性、添加到默认库或对现有特性的改进。

Python 3.10 有几个新的很酷的功能,使得使用 Python 成为一种更好的体验。在本文中,我将与您分享 6 个让我最兴奋的新特性。

更清楚的错误追踪

作为一个每天写Python 、教Python 的人,我深知遇到语法错误的挫败感。尽管一旦你掌握了Python和编程,就很容易修复语法错误,但是我们还是希望错误消息能给我们更好的提示,以帮助我们更好地定位错误并节省调试时间。

在Python 3.10中,两个新特性使得我们可以更好地处理错误,他们是更清楚地错误消息以及精确的行号。比如,我们有以下代码,包含一个字典和一个函数。但是我们忘记了字典结束的花括号“}”。

some_dict =
{1: "jack",
2: "john",
3: "james" ,
a_results = a_useful_function()

在之前的Python版本中,错误信息如下:

File "amazing_code.py",
line 3 a_results = a_useful_function()
^ SyntaxError: invalid syntax # 无效的语法

但是,随着新的错误消息和行号的改进,新的错误消息将包含更好的信息,例如准确的错误类型和精确的行号。

File "amazing_code.py",
line 1 expected =
{1: "jack",
2: "john",
3: "james" ,^ SyntaxError: '{' was never closed # 未关闭的 “ { ”

这一新特性将有助于加快调试速度,并减少人们开始学习 Python 的挫败感。

结构化模式匹配

如果您使用过 C++ 等其他编程语言,您可能希望 Python 有 switch 语句,这样您就不必经历冗长的 if、elif、elif、…、else 语句。好吧,Python 3.10 的新特性之一是添加了结构化模式匹配,或者换句话说,具有以下语法的 switch、case 语句。

match subject:  case <patt1>:        <act1>    case <patt2>:        <act2>    case <patt3>:        <act3>    case _:        <action_default>

新的类型联合运算符

尽管 Python 是一种动态类型的编程语言,但还是有一些方法可以使它的某些部分成为静态类型的。比如,你正在写一个函数,而属性的类型对于函数的内部通信很重要。在之前的版本中,你可以指定类型如下:

def func(num: int) -> int:    return num + 5

但是,如果你要接受两种类型,你就需要使用Union关键字。

def func(num: Union[int, float]) -> Union[int, float]:    return num + 5

在新版Python中,你可以用“|”运算符替代Union关键字,这样会更直接。

def func(num: int | float) -> int | float:    return num + 5

其他很酷的特性

4.1 更严格的zip
Python的乐趣之一就是zip()函数。它是一个内置函数,允许你同时遍历多个序列,并组合其返回值。在之前的版本中,你可以对不同长度的序列使用zip。但是,现在有了一个新的参数,strict,用来检查可遍历对象是否长度一致。

4.2 自动文本编码
作为程序员,我们会说,“他在我的电脑上能运行的”。代码在一台机器上运行而不在另一台机器上运行的原因有很多;文本编码可能会导致此类错误。

在以前的 Python 版本中,如果没有明确说明编码类型,首选的本地编码可能会导致代码在其他机器上失败。在 Python 3.10 中,可以激活警告以通知用户打开文本文件没有指定编码类型。

4.3 异步迭代
异步编程是一个强大而先进的编程范式,它从 3.5 版开始就成为 Python 的一部分。在Python 3.10,有两个新的异步的内置功能aiter()和anext()使你的代码更易读。

最后的想法

当我攻读本科学位时,我参加了几门使用 C++ 或 Java 编写代码和实现应用程序的课程。但是,当我要写毕业论文时,我决定学习和使用 Python。那是差不多十年前的事了,我再也没有回头;每当我解决问题时,Python就成了我首选的编程语言。

后来,我开始教授儿童计算机科学。我意识到 Python 正激励年轻一代从事技术职业。除了容易读写,容易上手,我最喜欢Python的一点是Python软件基金会的努力工作,保持Python与时俱进。

Python的每个版本,都带来了不起的新特性。这些特性是大部分Python程序员需要的,能让我们高效写Python代码。总之,它们让人们写代码更容易。本文中,我分享了让我和我的学生兴奋的Python 3.10的六个新特性。

参考链接:

  • https://towardsdatascience.com/6-new-awesome-features-in-python-3-10-a0598e87689f
  • https://docs.python.org/3/whatsnew/3.10.html
  • https://docs.python.org/zh-cn/3/whatsnew/3.10.html

Python 3.10 中的 6 个新特性,你体验了吗?相关推荐

  1. Python培训分享:Python新版本中的6个新特性

    Python在几年做了一个全面的升级,此次Python升级中有6个新特性,本期小编为大家介绍的Python培训教程就是关于介绍Python新版本中的6个新特性的,来看看下面的详细介绍. Python培 ...

  2. 您应该知道Python 3.10中的新特性!

    Hello,大家好,我是Alex,欢迎来到每周博客! 这篇博客来给大家介绍一下Python 3.10的新特性. Python 3.10版本带来了一些很棒的新功能和改进. 结构模式匹配 结构模式匹配可以 ...

  3. Python 3.8 稳定版正式发布,新特性全面解读

    早在之前关于 Python 新版本的文档在官方一就直处于更新模式中,就在昨日 Python 3.8 稳定版正式发布了,让我们来看看新版本有哪些新特性呢? Python 3.8.0 稳定版的新特性 1P ...

  4. Python3.10新特性初体验

    Python3.10新特性初体验 注:图片来源 目录 结构模式匹配 [PEP 635] union类型允许X | Y [PEP 604] 带圆括号的上下文管理器 一.结构模式匹配(新增PEP 635) ...

  5. SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008

    SQL Server 2008中Analysis Services的新特性 --深入SQL Server 2008 内容简介: 本书涵盖了SQL Server 2008引入的新功能.作者之一Rober ...

  6. Java 9 中的 9 个新特性

    Java 9 中的 9 个新特性 Java 8 发布三年多之后,已经于在2017年9月21日发布了. 你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它的更新. 这里有九个令人兴奋 ...

  7. 背水一战 Windows 10 (1) - C# 6.0 新特性

    背水一战 Windows 10 (1) - C# 6.0 新特性 原文:背水一战 Windows 10 (1) - C# 6.0 新特性 [源码下载] 背水一战 Windows 10 (1) - C# ...

  8. 背水一战 Windows 10 (43) - C# 7.0 新特性

    背水一战 Windows 10 (43) - C# 7.0 新特性 原文: 背水一战 Windows 10 (43) - C# 7.0 新特性 [源码下载] 背水一战 Windows 10 (43) ...

  9. android5.0后新特性修改标题头,Android5.0中Material Design的新特性

    Material Design简介 Material Design是谷歌新的设计语言,谷歌希望寄由此来统一各种平台上的用户体验,Material Design的特点是干净的排版和简单的布局,以此来突出 ...

最新文章

  1. 业余草 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)
  2. 五个最不流行的桌面环境
  3. 350. Intersection of Two Arrays II 两个数组的交集 II
  4. Redis功能强大,那也顶不住被滥用啊!
  5. oauth2.0授权码_OAUTH 2.0授权码授予
  6. 现代软件工程 作业 最后一周总结
  7. matlabrobert锐化_基于Matlab的图像锐化的研究
  8. matlab层次分析法程序购置设备,[转载]MATLAB实现层次分析程序
  9. SpringBoot启动流程解析
  10. C语言冒泡排序(升序)
  11. 什么是 Hash 冲突?如何解决 Hash 冲突?
  12. 梦想CAD控件 2021.12.06更新,网页浏览编辑CAD,CAD插件
  13. Python-GeoPandas地图、专题地图绘制
  14. 黑冰客防骗子—常见网络骗子骗术防御要点
  15. 苹果App store 2015最新审核标准
  16. iphone麦克风_如何从iPhone或iPad上的蓝牙麦克风录制音频
  17. JavaFx笔记二:布局
  18. JavaWeb开发基础:Cookies/Session学习
  19. 针对云主机卡死问题的定位分析方法
  20. 数学分析_Tom M.Apostol 定理7.6 用阿贝尔变换证明Riemann-Stieltjes积分的分部积分公式...

热门文章

  1. 解决百度云下载过慢、Linux下载百度云数据问题
  2. Node.js 初步学习总结
  3. js 中的属性以数字开头的属性和取值
  4. vue 组件模板template定义时的注意事项
  5. 批处理学习之Bat命令——获取当前盘符、当前目录、上级目录
  6. cdh maven仓库地址
  7. python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
  8. click() bind() live() delegate()区别 1
  9. 动态编译和静态编译及Java执行
  10. ACE主动对象模式学习