我们目前生活在Python 3.8的稳定时代,上周发布了Python的最新稳定版本3.8.4。Python 3.9已经处于其开发的beta阶段,并且2020年7月3日预发布了beta版本(3.9.0b4),第五版beta预定于明天发布。3.9的第一个稳定版本预计将在2020年10月发布。Python3.10的开发也将于2020年5月开始,并且第一个beta版本预计在2021年5月开始。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

对于Python爱好者来说,显然,有趣的时代即将到来。浏览三个版本(3.8、3.9和3.10)的发布时间表,敦促我在即将到来的有趣的Python开发时间表中编制关键日期。

"我妈妈总是说生活就像一盒巧克力。你永远都不知道会得到什么。" - 阿甘

通常,在开发周期中会有4–5个beta版本,并且在第一个beta版本之后的版本中不会引入任何新功能。对于3.8,beta-1已于2019年6月发布;对于3.9,beta-1已于2020年5月发布。尽管未来的Python 3.10刚刚启动,但官方网站已经在其一些亮点中进行了简要介绍。

这篇文章旨在简要介绍时间轴,并预览即将发布的新Python版本的主要功能,以改编Python网站上的官方示例。请注意,我们可能会在3.10版中看到更多新功能,并且随着时间的推移,我将继续更新以下列表。

突出显示Python 3.10中的功能

(1) 二进制表示中的频率为1

将引入一个新的方法bit_count(),该方法将返回整数的二进制表示形式中存在的个数。结果将独立于整数的符号。此功能的一个用例是在信息论中,其中对于两个等长的字符串,您可以找到两个字符串不同的位置的总数。这种差异称为汉明距离(参见Wiki)。在此处阅读有关Python中此功能的历史记录。

在后台,此方法仅调用strtype asstr.count('1')的count方法。以下示例对此进行了说明:

# Positive integer

>> > num = 108

# Let's first get the binary representation of num

>> > bin(num)

'0b1101100'

>> > num.bit_count()

4

# Negative integer

>> > num = -108

>> > bin(num)

'-0b1101100'

>> > num.bit_count()

4

# Under the hood

>>

> bin(num).count(

'1'

)

(2) 压缩将是"严格的"

新的可选关键字参数strict将添加到zip函数中。如果passstrict = True,则压缩的可迭代项的长度必须相等,否则将引发ValueError。在Python 3.9之前,如果要压缩两个不等长的列表,则将得到长度等于较小列表的输出。

如以下示例所示,在Python 3.10之前,zip()函数忽略了第一个列表中不匹配的'D'。相比之下,Python 3.10将引发ValueError。鉴于压缩相同数量项目的直观性,我喜欢此功能,因为它唤醒您重新检查您的输入。在PEP 618上了解有关此问题的更多信息。

在Python 3.10之前:

>> > list(zip([ 'A' ,  'B' ,  'C' ,  'D' ], [ 'Apple' ,  'Ball' ,  'Cat' ]))

[( 'A' ,  'Apple' ), ( 'B' ,  'Ball' ), ( 'C'

,

'Cat'

)]

在Python 3.10中:

>>>  list (zip([ 'A' ,  'B' ,  'C' ,  'D' ], [ 'Apple' ,  'Ball' ,  'Cat' ], strict=True))

Traceback (most recent  call last ): ...ValueError: zip()  argument 1  is

longer than

argument

2

(3) 字典的只读视图

字典的三个键方法keys(),values()和items()返回类似于集合的对象,这些对象分别对应于字典的键,值和项目的动态视图。您在这两个视图中所做的任何更改也将反映在原始词典中。

在Python 3.10中,从以上三种方法返回的所有视图都将具有一个称为mapping的附加属性,该属性将返回该映射的只读代理。该只读代理将包装视图引用的原始字典。以下示例对此进行了说明:

让我们定义一个字典并将其键和值存储在单独的变量中:

>> > fruits = { 'Mangos' : 12,  'Figs' : 100,  'Guavas' : 3,  'Kiwis' : 70}

>> > keys = fruits.keys()

>> > values = fruits.values()

>> > list(keys)

[ 'Mangos' ,  'Figs' ,  'Guavas'

,

'Kiwis'

]

现在,我们使用thedel语句从此字典中删除两个元素。如果现在打印键和值,您将看到它仅返回其余项目。现在,原始词典中的更改将反映在视图中(此处为键和值)。

>> > del fruits[ 'Figs' ]

>> > del fruits[ 'Guavas' ]

>> > print (list(keys), list(values))

[ 'Mangos'

,

'Kiwis'

] [12, 70]

现在,通过映射,您将仍然能够找回原始字典的只读代理。cool! 是不是

# returns a read-only proxy of the original dictionary

>> > values.mapping

mappingproxy({ 'Mangos' : 12,  'Figs' : 100,  'Guavas' : 3,  'Kiwis' : 70})

>> > values.mapping[ 'Guavas' ]

3

(4) 消除一些向后兼容性

集合模块的抽象基类(ABC)的别名支持将从Python 3.10开始删除。因此,现在是停止忽略相应的"弃用警告"并改编代码的好时机。

高达Python 3.9.0b4(于2020年7月3日发布)

到现在为止,在DeprecationWarning中将直接从collections模块中导入任何这些ABC。

>>>  from collections  import ABC_Name

DeprecationWarning: Using  or importing the ABCs  from 'collections' instead  of from 'collections.abc' is deprecated since Python 3.3, and in

3.9

Python 3.10 明年发布,看看都有哪些新特性?的更多相关文章

  1. Elasticsearch 7.0 发布都有哪些新特性

    了解about云知识星球 .pcb{margin-right:0} 问题导读 1.Elasticsearch&Kibana 7.哪些需要修改? 2.Elasticsearch7 有哪些新特性? ...

  2. 从java1到java9每个版本都有什么新特性?

    每次出新版本,大家大概都会这么问,"Java X会有什么特性呢?" .在下面的内容里,我总结了至今为止的Java主要发行版中各自引入的新特性,这样做的目的是为了突出各个新特性是在哪 ...

  3. Spring Boot 2.2.2 发布,新增 2 个新特性!

    Spring Boot 2.2.2 发布咯! Spring Boot 2.2.1 发布,一个有点坑的版本! 2.2.1 发布没过一个月,2.2.2 就来了. Maven依赖给大家奉上: <dep ...

  4. Java 10 的 10 个新特性,将彻底改变你写代码的方式!

    Java 9才发布几个月,很多玩意都没整明白,现在Java 10又快要来了.. 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK ...

  5. Java 10 的 10 个新特性,你颤抖了吗?

    Java 9才发布几个月,很多玩意都没整明白,现在Java 10又快要来了.. 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK ...

  6. Java 10的10个新特性,将彻底改变你写代码的方式!

    Java 9才发布几个月,很多玩意都没整明白,现在Java 10又快要来了.. 这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK ...

  7. Python不能用于大型项目?关于Python的10大误解

     语言多元化是PayPal编程文化中一个重要的组成部分.在C++和Java长期流行的同时,更多的团队选择了Jva和Scala.同时,Braintree的收购也引入了一个久经世故的Ruby社区.Pyt ...

  8. Python 3.8.0 正式版发布,新特性初体验

    北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性. 赋值表达式 PEP 572: Assignment Expressi ...

  9. Python 3.8.0 正式版发布,新特性初体验 全面介绍

    Python 3.8.0 正式版发布,新特性初体验 北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性. 赋值表达式 PE ...

随机推荐

  1. LVS-DR实现mysql负载均衡集群

    lvs-dr实现mysql负载均衡集群 环境说明: 服务器的操作系统均为centos7,vip和rip在同一网段,使用lvs-dr模型来实现mysql集群服务 所有服务器均已配置好处VIP外的静态IP ...

  2. 3行!仅3行代码就能抓取B站(弹幕、评论、用户)数据

    今天介绍一个获取B站数据的Python扩展库-bilibili_api 可以获取的数据包括: video-视频模块 user-用户模块 dynamic-动态模块 这次用“Running Man”十周年 ...

  3. Meow 攻击会删除不安全(开放的)的Elasticsearch(及MongoDB) 索引,然后建一堆以Meow结尾的奇奇怪怪的索引(如:m3egspncll-meow)

    07月29日,早上照例一来,先连接Elasticsearch查看日志[禁止转载,by @CoderBaby],结果,咦,什么情况,相关索引被删除了,产生了一堆以Meow开头的奇奇怪怪的索引,如下图: ...

  4. Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)

    前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 上一篇: Azure DevOps+Docker+Asp.N ...

  5. Java—io流之打印流、 commons-IO

    打印流 打印流根据流的分类: 字节打印流  PrintStream 字符打印流  PrintWriter /* * 需求:把指定的数据,写入到printFile.txt文件中 * * 分析: * 1, ...

  6. C#LeetCode刷题之#888-公平的糖果交换(Fair Candy Swap)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3758 访问. 爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝 ...

  7. 详解Java线程池的ctl(线程池控制状态)【源码分析】

    0.综述 ctl 是线程池源码中常常用到的一个变量. 它的主要作用是记录线程池的生命周期状态和当前工作的线程数. 作者通过巧妙的设计,将一个整型变量按二进制位分成两部分,分别表示两个信息. 1.声明与 ...

  8. python对端口进行扫描

    使用cocket模块配合多线程对端口进行扫描,后续功能正在思考ing. import socket from multiprocessing.dummy import Pool as ThreadPo ...

  9. HotSpot的垃圾回收器

    如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现.这里讨论的收集器基于JDK 1.7 Update 14之后的 HotSpot 虚拟机,这个虚拟机包含的所有收集器如下图所示 上图 ...

  10. N46期第一周作业

    1.解释drwx rwx rwx中每个字符表⽰什么? d : 表示目录文件 ①rwx表示UID的读写执行权限  ②rwx表示GID的读写执行权限   ③rwx表示other的读写执行权限   2.li ...