字幕组双语原文:Python 3.9有什么新功能?

英语原文:What Are The New Features in Python 3.9?

翻译:雷锋字幕组

Python的新版本即将面世。现在是beta版(3.9.0b3),我们很快就会看到python3.9的完整版本。

一些最新的特性令人兴奋,在发布后使用它们将是令人震惊的。我们将讨论以下内容:

字典联合运算符

类型提示

两种新的字符串方法

新的Python解析器

这挺酷的,让我们先来看看这些新特性以及如何使用它们。

字典联合

我最喜欢的一个新功能,语法流畅。如果我们有两个字典a和b需要合并,我们现在使用union运算符。

我们有合并运算符 |:a = {1: 'a', 2: 'b', 3: 'c'}

b = {4: 'd', 5: 'e'}

c = a | bprint(c)

输出:{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}

更新运算法 |=,更新原始字典:a = {1: 'a', 2: 'b', 3: 'c'}

b = {4: 'd', 5: 'e'}

a |= bprint(a)

输出: {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}

如果字典共享一个公钥,将使用第二个字典的键值对:a = {1: 'a', 2: 'b', 3: 'c', 6: 'in both'}

b = {4: 'd', 5: 'e', 6: 'but different'}print(a | b)

输出:{1: 'a', 2: 'b', 3: 'c', 6: 'but different', 4: 'd', 5: 'e'}

使用Iterables更新字典

|=运算符的另一个很酷的行为是使用iterable对象(如列表或生成器)用新的键值对更新字典:a = {'a': 'one', 'b': 'two'}

b = ((i, i**2) for i in range(3))

a |= bprint(a)

输出: {'a': 'one', 'b': 'two', 0: 0, 1: 1, 2: 4}

如果我们用标准的union运算符|尝试同样的操作,将输出TypeError,因为它只允许dict类型之间的联合。

类型提示

Python是动态语言,这意味着我们不需要在代码中指定数据类型。

这是可以的,但有时会令人困惑,而且Python的灵活性突然变得比其他任何东西都麻烦。

从3.5开始,我们可以指定类型,但这相当麻烦。这次更新确实改变了这一点,让我们举个例子:

无类型提示(左) V 有类型提示(右)

在add_int函数中,我们想给它添加相同的数字(出于某种神秘的未定义的原因)。但是我们的编辑器不知道,使用+将两个字符串添加在一起是完全可以的,因此不会提示警告。

我们现在可以做的是将预期的输入类型指定为int。 之后编辑器会立刻报出问题。

我们也可以对包含的类型进行详细说明,例如:

类型提示用于各处-感谢新语法,看起来更加简洁:

我们将sum_dict的参数指定为dict,将返回值指定为int。在测试定义期间,我们还确定了它的类型。字符串方法

虽然没有其他新功能那么吸引人,但仍然值得一提,因为它特别有用。添加了两种用于删除前缀和后缀的新字符串方法:

"Hello world".removeprefix("He")

输出:“llo world”Hello world".removesuffix("ld"

输出:“Hello wor”新解析器

这是一个看不见的变化,但有可能成为Python未来发展最重要的变化之一。

Python当前使用的主要是基于LL(1)的语法,而该语法又可以由LL(1)解析器进行解析,该解析器从上到下,从左至右解析代码,提前一个标记。

我几乎不知道这是如何工作的—但是我可以给您介绍一些由于使用这种方法而导致的Python当前的一些问题:

Python包含非LL(1)语法;因此,当前语法的某些部分使用了变通方法,造成了不必要的情况复杂性 。LL(1) 在Python语法中创建限制(没有可能的解决方法)。此问题强调以下代码无法使用当前解析器实现(引发语法错误):with (open("a_really_long_foo") as foo,

open("a_really_long_bar") as bar):    pass

LL(1)在解析器中用左递归中断。这意味着特定的递归语法会导致解析树中出现无限循环。Python的创建者Guido van Rossum解释道

所有这些因素(还有更多我根本无法理解的因素)对Python有一个主要的影响;它们限制了语言的发展。

新的基于PEG的解析器将使Python开发人员具有更大的灵活性,这一点我们将从Python 3.10 onwards  开始注意到。

这就是我们在即将到来的Python3.9中所能期待的一切。如果您真的等不及了,最新的beta版本3.9.0b3 — is available here。

雷锋字幕组是一个由AI爱好者组成的翻译团队,汇聚五五多位志愿者的力量,分享最新的海外AI资讯,交流关于人工智能技术领域的行业转变与技术创新的见解。

团队成员有大数据专家,算法工程师,图像处理工程师,产品经理,产品运营,IT咨询人,在校师生;志愿者们来自IBM,AVL,Adobe,阿里,百度等知名企业,北大,清华,港大,中科院,南卡罗莱纳大学,早稻田大学等海内外高校研究所。

如果,你也是位热爱分享的AI爱好者。欢迎与雷锋字幕组一起,学习新知,分享成长。

加载中...

Sina.cn(京ICP0000007) 2020-10-30 14:23

python有什么功能-Python 3.9有什么新功能?相关推荐

  1. 官宣:Python 3.8正式发布!来看看有哪些新功能

    点击上方"码农突围",马上关注,每天上午8:50准时推送 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点 ...

  2. Julia发布全功能调试器:4大新功能问世

    Julia发布全功能调试器:4大新功能问世 量子位 出品 | 公众号 QbitAI Julia这门语言,因为集合了C语言的速度.Ruby的灵活.Python的通用于一身,获得了万千程序员的喜爱. 福利 ...

  3. android7.0 比较特别的功能,安卓7.0有什么新功能 Android7.0新功能全面一览

    类型:系统工具大小:5.1M语言:中文 评分:10.0 标签: 立即下载 安卓7.0有什么新功能,Android7.0新功能全面一览.安卓7.0系统已经上线了,相信很多使用安卓机的小伙伴都对自己的系统 ...

  4. Python 3.7 即将发布,引入多项新功能!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! Python 3.7 将于今年夏天发布,先来窥探一些新功能. Python 3.7 中有许多 ...

  5. PEP最新提案推出,Python将上线重大更新,带来了哪些新功能?

    Python在上线任何新功能之前,都需要由PEP,即Python增强提案(Python Enhancement Proposal)概述新功能内容.因此,了解PEP能够知道Python在未来可能会进行哪 ...

  6. android功能导航布局,安卓9.0新功能 屏幕旋转将与导航栏同窗

    中关村在线消息:今天早些时候谷歌向开发者们推送了Android P(也称安卓9.0)的首个开发者预览版,在原先8.0的基础上进一步改进了通知栏,也为刘海屏幕专门进行了优化.意味着未来"刘海& ...

  7. 为什么NX10帮助功能无法找到HTML,NX10.0 新功能介绍视频教程专辑

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 NX10.0 新功能介绍视频教程专辑 PLM之家NX10.0界面基础新功能--1 NX新界面增强.mp4 PLM之家NX10.0界面基础新功能--2 问题 ...

  8. 谷歌浏览器 检查功能_谷歌Chrome浏览器添加新功能,爱”吃“内存有应对之策?...

    谷歌Chrome浏览器是Windows上占用资源最多的应用程序之一,如果安装扩展程序或打开过多的选项卡,其将占用更多的内存.据悉,目前Google Chrome Canary内部版本对一项新功能进行了 ...

  9. bit1618c 功能简介_c 9中的新功能简介

    bit1618c 功能简介 With the upcoming release of .NET 5 - the release which unifies the .NET runtimes - Mi ...

  10. 苹果7计算机有什么功能是什么,iPhone7有哪些新功能 iPhone7新功能汇总【详细介绍】...

    iPhone6 还在火热开卖,而现在就已经对iPhone7的配置.概念设计进行不大不小的曝光,在iPhone7中10大新功能曝光,具体都有哪些?我们一起来看看. iPhone7 1.蓝宝石玻璃 蓝宝石 ...

最新文章

  1. Find The Multiple POJ - 1426(只包含01的十进制倍数(同余模定理))
  2. MITRE:利用微生物组时间序列数据推断与宿主状态变化相关的特征
  3. 金九银十铁12,看完弄懂,工资少说加 5K
  4. 去掉 java BigDecimal 类对象后面没用的零
  5. JVM 的 Finalization Delay 引起的 OOM(java.lang.OutOfMemoryError:null at sun.misc.Unsafe.allocateMemory.)
  6. (转)Facebook如何提高软件质量?
  7. 为什么私有GIT服务器上无法查看上传的代码?
  8. VS2008 vs2010中JQUERY智能提醒
  9. 百度OCR文字识别API使用心得===com.baidu.ocr.sdk.exception.SDKError[283604]
  10. 【iOS】Illegal Configuration: The Label outlet from the ViewController to the UILabel is invalid. Outl
  11. 主成分分析、因子分析和聚类分析的区别
  12. 困惑度 | NLP中对困惑度感到困惑?
  13. C语言的本质(2)——二进制、八进制、十六进制与十进制
  14. python下载电影包_我是如何使用python控制迅雷自动下载电影的?
  15. 可道云访问服务器其他文件,可道云怎么用_可道云使用功能解析
  16. 小米账号无故泄露 手机安全问题何解?
  17. STC15W201S串口蓝牙通信PWM控制RGB彩灯
  18. 扣哒世界入选第33届国际信息学奥赛IOI专项赛
  19. 数据结构与算法(六)- 单向链表的反转
  20. linux番茄时钟,Linux 番茄时钟 定时 取消 快捷方式

热门文章

  1. Centos目录及其常用处理命令
  2. vsftpd日志配置及查看——可以将vsftpd记录在系统日志里
  3. spark 决策树分类算法demo
  4. shingling算法——提取特征,m个hash函数做指纹计算,针对特征hash后变成m维向量,最后利用union-find算法计算相似性...
  5. macbook pro 识别不到外接显示器
  6. 【BZOJ3745】Norma(CDQ分治)
  7. python3+django写的个人笔记博客
  8. 转---svn的使用
  9. 微信的通讯录首字母滑动的实现
  10. [转载] Handbook of Constraint Programming——Chapter1 Introduction