文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

新版本尝鲜:Python 3.9版本中的新功能有哪些?

2024-12-11 19:15

关注

又要到Python新版本发布的时刻了,测试版已然推出,完整发行版将在不久之后与我们见面。这无疑令技术爱好者们十分兴奋,摩拳擦掌地等待上手一探究竟。

新版本中有许多值得期待的新功能,本文就先带大家尝尝鲜。

[[333092]]

1. 字典合并

这是笔者最喜欢的新功能之一,它拥有优美的语法。如果有两个字典a和b需要合并,可以使用合并运算符:

合并(merge)操作符|:

  1. a = {1: 'a', 2: 'b', 3: 'c'} 
  2. b = {4: 'd', 5: 'e'}c = a | b 
  3. print(c)[Out]: {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'} 

用来更新原始字典的更新运算符|=:

  1. a = {1: 'a', 2: 'b', 3: 'c'} 
  2. b = {4: 'd', 5: 'e'}a |= b 
  3. print(a)[Out]: {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'} 

如果字典共享一个公共键(common key),则使用第二个字典中的键值对:

  1. a = {1: 'a', 2: 'b', 3: 'c', 6: 'in both'} 
  2. b = {4: 'd', 5: 'e', 6: 'but different'}print(a | b)[Out]: {1: 'a', 2: 'b', 3: 'c', 6: 'but different',4: 'd', 5: 'e'} 

使用迭代更新字典:|=运算符还有一个不错的地方,即能够通过可迭代对象(例如列表或生成器)使用新的键值对更新字典。

  1. a = {'a': 'one', 'b': 'two'} 
  2. b = ((i, i**2) for i in range(3))a |= b 
  3. print(a)[Out]: {'a': 'one', 'b': 'two', 0: 0, 1: 1, 2: 4} 

如果尝试使用标准合并运算符|进行相同的操作,将产生一个类型错误(TypeError),因为它仅允许字典(dict)类型之间的合并操作。


2. 字符串方法

这个功能看起来“其貌不扬”,但实则非常实用。新版本添加了两个用于删除前缀和后缀的新字符串方法:

  1. “ Hello world” .removeprefix(“ He”) 
  2. [Out]:“ llo world” 
  3. Hello world” .removesuffix(“ ld”) 
  4. [Out]:“ Hello wor” 

3. 新分析器

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

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

笔者几乎不知道它是如何工作的,但是可以指出一些由于Python使用这种方法导致的问题:

所有这些因素(还有很多根本无法理解的因素)严重限制了Python语言的发展。而基于PEG的新分析器将为Python开发人员提供更大的灵活性,人们会从Python 3.10开始注意到这一点。

4. 类型提示

Python是动态类型的,这意味着无需在代码中指定数据类型。这一特性本身没有问题,但有时可能会造成混淆。

从Python 3.5开始,用户可以指定类型,但是操作起来非常麻烦。此次更新改变了这一点,举个例子:

无类型提示(左)vs3.9中带类型提示(右)

add_int函数的目的是为数值自身添加相同的数值。但是编辑器并不知道这一点,因此完全可以使用+将两个字符串加在一起,不会发出警告。现在可以将期望的输入类型指定为int。使用此功能,编辑器可以立即了解问题。

用户还可以非常详细地了解所包含的类型,例如:


类型提示可以在任何地方使用,新语法让代码看起来更加整洁:


将sum_dict的参数指定为dict,将返回值指定为整数型。在定义test时,也要确定其类型。

这些新功能确实让人迫不及待,等不及的同学可以先去试试最新的Beta版本-3.9.0b3。

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯