Python 3.10 明年发布,这些新特性即将来袭!

Stella981
• 阅读 603

点击“开发者技术前线”,选择“星标🔝”

在看|星标|留言,  真爱


Python 3.10 明年发布,这些新特性即将来袭!

来源: 闻数起舞

我们目前生活在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爱好者来说,显然,有趣的时代即将到来。浏览三个版本(3.8、3.9和3.10)的发布时间表,敦促我在即将到来的有趣的Python开发时间表中编制关键日期。

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

Python 3.10 明年发布,这些新特性即将来袭!

通常,在开发周期中会有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 
 
     
     
     it will stop working 
 
     
     
     

    
    
    

相关学习推荐

吴恩达新书《Machine Learning Yearning》,附中文版PDF下载!图文并茂可能更适合你

Python 3.10 明年发布,这些新特性即将来袭!

简介

免费电子书《Machine Learning Yearning》是吴恩达历时两年总结整理的一本机器学习实践经验宝典,它以较高的层次为我们介绍了许多在机器学习时代AI工程师应该掌握的技术策略。该书并不聚焦于具体的AI算法,而是为我们介绍了许多具有泛化性的如何让AI算法有效工作的技术。

这本书的重点并不是教你具体的机器学习算法,而是如何让机器学习算法有效工作。

主要内容

部分内容如下:

  • 机器学习为什么需要策略?

  • 如何使用此书来帮助你的团队

  • 先修知识与符号说明

  • 规模驱动机器学习发展

  • 开发集和测试集的定义

  • 将大型开发集拆分为两个子集,专注其一

  • Eyeball 和 Blackbox 开发集该设置多大?

  • 小结:基础误差分析

  • 偏差和方差:误差的两大来源

  • 偏差和方差举例

  • 与最优错误率比较

  • 处理偏差和方差

  • 偏差和方差间的权衡

  • 减少可避免偏差的技术

  • 训练集误差分析

  • 减少方差的技术

  • 诊断偏差与方差:学习曲线

  • 绘制训练误差曲线

  • 流水线组件的选择:数据可用性

  • 流水线组件的选择:任务简单性

  • 建立超级英雄团队 - 让你的队友阅读这本书吧!

关注下面二维码

回复「MLY」即可获取

Python 3.10 明年发布,这些新特性即将来袭!

END

开发者技术前线 ,汇集技术前线快讯和关注行业趋势,大厂干货,是开发者经历和成长的优秀指南。

历史推荐

哈工大硕士生用Python实现了11种数据降维算法,代码已开源!

2020年必学的 10 大算法

最全 14 张思维导图,带你构建 Python 编程的核心知识体系!

2020 年,最适合 AI 的 5 种编程语言

全国大学生数学建模竞赛中,哈工大被禁用 MATLAB!

为什么不建议 for 循环里 String ++?

Python 3.10 明年发布,这些新特性即将来袭!

Python 3.10 明年发布,这些新特性即将来袭!

Python 3.10 明年发布,这些新特性即将来袭!

点个在看吧

Python 3.10 明年发布,这些新特性即将来袭!

本文分享自微信公众号 - 开发者技术前线(China_DevTech)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Stella981 Stella981
2年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
可莉 可莉
2年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
2个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这