我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python 3.9的新功能有哪些

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python 3.9的新功能有哪些

这篇文章主要介绍“Python 3.9的新功能有哪些”,在日常操作中,相信很多人在Python 3.9的新功能有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python 3.9的新功能有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 字典(合并&更新)运算符

字典是Python中最基础的数据结构之一,并且随着python版本的迭代,性能得到不断地优化。

Python3.9中,合并(|)和更新(|=)运算符已添加到dict类中。这些更新完善了现有的dict.update和{** d1,**  d2}方法。

传统合并字典的方法:

>>> pycon = {2016: "Portland", 2018: "Cleveland"} # 字典1 >>> europython = {2017: "Rimini", 2018: "Edinburgh", 2019: "Basel"} # 字典2  # 方法一 >>> {**pycon, **europython} {2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}  #方法二 >>> merged = pycon.copy() >>> for key, value in europython.items(): ...     merged[key] = value ... >>> merged {2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}

这两种方法都合并了字典而不更改原始数据。请注意,字典1中“Cleveland”已被合并的字典2中“Edinburgh”覆盖。

你也可以更新字典1:

>>> pycon.update(europython) >>> pycon {2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}

新版本的Python引入了两个新的字典运算符:合并(|)和更新(|=)。你可以使用|合并两个字典,而|=用于更新字典:

>>> pycon = {2016: "Portland", 2018: "Cleveland"} >>> europython = {2017: "Rimini", 2018: "Edinburgh", 2019: "Basel"}  >>> pycon | europython  # 合并 {2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}  >>> pycon |= europython # 更新 >>> pycon {2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}

d1|d2和{** d1,** d2}的作用类似,都用于合并字典取并集,遇到相同key,后者会将前者覆盖。

使用|的优势之一是它适用于类似字典的类型,并在合并后保持原来的类型:

>>> from collections import defaultdict >>> europe = defaultdict(lambda: "", {"Norway": "Oslo", "Spain": "Madrid"}) >>> africa = defaultdict(lambda: "", {"Egypt": "Cairo", "Zimbabwe": "Harare"})  >>> europe | africa defaultdict(<function <lambda> at 0x7f0cb42a6700>,   {'Norway': 'Oslo', 'Spain': 'Madrid', 'Egypt': 'Cairo', 'Zimbabwe': 'Harare'})  >>> {**europe, **africa} {'Norway': 'Oslo', 'Spain': 'Madrid', 'Egypt': 'Cairo', 'Zimbabwe': 'Harare'}

|=的作用是更新字典,类似于.update():

>>> libraries = { ...     "collections": "Container datatypes", ...     "math": "Mathematical functions", ... } >>> libraries |= {"zoneinfo": "IANA time zone support"} >>> libraries {'collections': 'Container datatypes', 'math': 'Mathematical functions',  'zoneinfo': 'IANA time zone support'}

|=还可以将类似字典的数据结构用于更新:

>>> libraries |= [("graphlib", "Functionality for graph-like structures")] >>> libraries {'collections': 'Container datatypes', 'math': 'Mathematical functions',  'zoneinfo': 'IANA time zone support',  'graphlib': 'Functionality for graph-like structures'}

2. 删除字符串前缀和后缀

在Python  3.9中,可以使用.removeprefix()和.removesuffix()分别删除字符串的开头或结尾:

>>> "three cool features in Python".removesuffix(" Python") 'three cool features in'  >>> "three cool features in Python".removeprefix("three ") 'cool features in Python'  >>> "three cool features in Python".removeprefix("Something else") 'three cool features in Python'

有人会说.strip方法也可以呀,但是该方法会出现误删操作:

>>> "three cool features in Python".strip(" Python") 'ree cool features i'

可以看到,明明想删掉结尾的单词python,但是开头的there也被删除了一部分-Th。

所以.removeprefix()和.removesuffix()可能更精准一些。

3.  zoneinfo时区模块

zoneinfo是python3.9新引入的模块,zoneinfo可以访问Internet号码分配机构(IANA)时区数据库。IANA每年都会多次更新其数据库,这是时区信息的最权威来源。

使用zoneinfo,可以获得数据库中描述任何时区的对象:

>>> from zoneinfo import ZoneInfo >>> ZoneInfo("America/Vancouver") zoneinfo.ZoneInfo(key='America/Vancouver')
>>> from zoneinfo import ZoneInfo >>> from datetime import datetime, timedelta  >>> # 夏令时 >>> dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles")) >>> print(dt) 2020-10-31 12:00:00-07:00 >>> dt.tzname() 'PDT'  >>> # 标准时间 >>> dt += timedelta(days=7) >>> print(dt) 2020-11-07 12:00:00-08:00 >>> print(dt.tzname()) PST

4.  内置集合类型用于类型提示

在类型提示中,现在可以将内置集合类型(例如list和dict)用作泛型类型,而不必从typing中导入相应的大写类型(例如List或Dict)。

def greet_all(names: list[str]) -> None:     for name in names:         print("Hello", name)

5. 拓扑排序

Python  3.9添加了一个新的模块graphlib,其中包含graphlib.TopologicalSorter类,以提供执行拓扑排序的功能。

>>> dependencies = { ...     "realpython-reader": {"feedparser", "html2text"}, ...     "feedparser": {"sgmllib3k"}, ... } ...  >>> from graphlib import TopologicalSorter >>> ts = TopologicalSorter(dependencies) >>> list(ts.static_order()) ['html2text', 'sgmllib3k', 'feedparser', 'realpython-reader']

6. 最小公倍数(LCM)

Python长期以来一直具有用于计算两个数字的最大公约数(GCD)的功能:

>>> import math >>> math.gcd(49, 14) 7

最小公倍数(LCM)与最大公约数(GCD)有关,可以根据GCD定义LCM:

>>> def lcm(num1, num2): ...     if num1 == num2 == 0: ...         return 0 ...     return num1 * num2 // math.gcd(num1, num2) ... >>> lcm(49, 14) 98

在Python 3.9中,不再需要定义自己的LCM函数,它新增了计算最小公倍数功能:

>>> import math >>> math.lcm(49, 14) 98

7. 更强大的Python解析器

Python  3.9最酷的功能之一是大家在日常编程中不会注意到的功能,那就是解析器的更新。解析器是Python解释器的基本组件。在最新版本中,解析器已重新构建。

Python之前一直使用LL(1)解析器将源代码解析为解析树。你可以将LL(1)解析器视为一次读取一个字符,并解释源代码而无需回溯的解析器。

新解释器是基于PEG(parsing expression  grammar)实现的,并非LL(1)。新解析器的性能可以与旧解析器媲美,在设计新语言功能时,PEG比LL(1)更灵活。

在整个标准库中,PEG解析器稍快一些,然而也使用了更多的内存。实际上,使用新解析器时,很难能感知到性能的好坏。

到此,关于“Python 3.9的新功能有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

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

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

Python 3.9的新功能有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python 3.0有哪些新功能

本篇内容介绍了“Python 3.0有哪些新功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Python 3.1的开发计划中,很大一部分
2023-06-17

Python 3.8新功能有哪些

这篇文章主要讲解了“Python 3.8新功能有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python 3.8新功能有哪些”吧!1. 新模块:读取元数据历使用新的importlib.
2023-06-01

Python 3.9.6最新版本有哪些新功能

这篇文章主要讲解了“Python 3.9.6最新版本有哪些新功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python 3.9.6最新版本有哪些新功能”吧!安全mod: http.cli
2023-06-20

Java9有哪些新功能

本篇内容介绍了“Java9有哪些新功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、模块化的源代码JDK 源代码将以模块化的形式组织起来
2023-06-17

Laravel8.78有哪些新功能

本篇内容主要讲解“Laravel8.78有哪些新功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Laravel8.78有哪些新功能”吧!Laravel 团队发布了 8.78,能够向默认密码验证
2023-06-26

Web3.0有哪些新功能

这篇文章主要介绍“Web3.0有哪些新功能”,在日常操作中,相信很多人在Web3.0有哪些新功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Web3.0有哪些新功能”的疑惑有所帮助!接下来,请跟着小编一起来
2023-07-04

Flex2.0Beta1新功能有哪些

这篇文章主要介绍Flex2.0Beta1新功能有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Flex2.0Beta1的新功能Flex2.0产品系列能够使开发者构建丰富、吸引人的基于Web的应用程序,这些应用程序
2023-06-17

ubuntu14.04 新功能有哪些

这篇文章主要介绍“ubuntu14.04 新功能有哪些”,在日常操作中,相信很多人在ubuntu14.04 新功能有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ubuntu14.04 新功能有哪些”的疑
2023-06-13

Android13新功能有哪些

本文小编为大家详细介绍“Android13新功能有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android13新功能有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。新功能和API带主题的应用图标让应
2023-07-05

Laravel9.35有哪些新功能

这篇文章主要介绍“Laravel9.35有哪些新功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Laravel9.35有哪些新功能”文章能帮助大家解决问题。备用邮件语法Taylor Otwell
2023-07-04

win10有哪些新功能

Windows 10拥有许多新功能,以下是其中一些:1. 开始菜单:Windows 10还原了传统的开始菜单,它结合了Windows 7的传统菜单和Windows 8的动态磁贴。2. 虚拟桌面:Windows 10引入了虚拟桌面功能,允许用
2023-10-21

Laravel10有哪些新功能

本文小编为大家详细介绍“Laravel10有哪些新功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“Laravel10有哪些新功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Laravel 10 将在用户空间
2023-07-04

Laravel9.37有哪些新功能

这篇文章主要介绍“Laravel9.37有哪些新功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Laravel9.37有哪些新功能”文章能帮助大家解决问题。Verbose 视图缓存Andrew B
2023-07-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录