从功能强大的新赋值语法到底层大变动,Python 3.8 迈向更现代的 Python。

作者 | Serdar Yegulalp

译者 | 弯月,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下为译文:

Python 3.8是Python语言的最新版本,它适合用于编写脚本、自动化以及机器学习和Web开发等各种任务。现在Python 3.8已经进入官方的beta阶段,这个版本带来了许多语法改变、内存共享、更有效的序列化和反序列化、改进的字典和更多新功能。

Python 3.8还引入了许多性能改进。总的来说,我们即将拥有一个更快、更精确、更一致和更现代的Python。下面是Python 3.8的新功能和最重要的改变。

赋值表达式

Python 3.8最明显的变化就是赋值表达式,即:=操作符。赋值表达式可以讲一个值赋给一个变量,即使变量不存在也可以。它可以用在表达式中,无需作为单独的语句出现。

while (line := file.readline()) != "end":    print(chunk)"end":print(chunk)

上例中,如果变量line不存在则会被创建,然后将file.readline()的返回值赋给它。然后检查line是否为"end"。如果不是,则读取下一行,保存在line中,然后继续测试。

赋值表达式遵循了Python一贯简洁的传统,就像列表解析式一样。其目的在于避免在特定的Python编程模式中出现一些枯燥的样板代码。例如,上述代码用一般写法需要多写两行代码。

仅通过位置指定的参数

仅通过位置指定的参数是函数定义中的一个新语法,可以让程序员强迫某个参数只能通过位置来指定。这样可以解决Python函数定义中哪个参数是位置参数、哪个参数是关键字参数的模糊性。

仅通过位置指定的参数可以用于如下情况:某个函数接受任意关键字参数,但也能接受一个或多个未知参数。Python的内置函数通常都是这种情况,所以允许程序员这样做,能增强Python语言的一致性。

Python文档中给出的例子如下:

def pow(x, y, z=None, /):    r = x**y    if z is not None:        r %= z    return rr = x**yif z is not None:r %= zreturn r

符号 / 分隔了位置参数和关键字参数。在这个例子中,所有参数都是未知参数。在以前版本的Python中,z会被认为是关键字参数。但采用上述函数定义,pow(2, 10)和pow(2, 10, 5)都是正确的调用方式,而pow(2, 10, z=5)是不正确的。

支持f字符串调试

f字符串格式可以更方便地在同一个表达式内进行输出文本和值或变量的计算,而且效率更高。

x = 3 print(f'{x+1}')
print(f'{x+1}')

输出4。

在f字符串表达式末未添加=可以输出f表达式本身的值,后面是计算后的值

x = 3print (f'{x+1=}')
print (f'{x+1=}')

输出为x+1=4。

多进程共享内存

在Python 3.8中,multiprocessing模块提供了SharedMemory类,可以在不同的Python进城之间创建共享的内存区域。

在旧版本的Python中,进程间共享数据只能通过写入文件、通过网络套接字发送,或采用Python的pickle模块进行序列化等方式。共享内存提供了进程间传递数据的更快的方式,从而使得Python的多处理器和多内核编程更有效率。

共享内存片段可以作为单纯的字节区域来分配,也可以作为不可修改的类似于列表的对象来分配,其中能保存数字类型、字符串、字节对象、None对象等一小部分Python对象。

Typing模块的改进

Python是动态类型语言,但可以通过typing模块添加类型提示,以便第三方工具验证Python代码。Python 3.8给typing添加了一些新元素,因此它能够支持更健壮的检查:

  • final修饰器和Final类型标注表明,被修饰或被标注的对象在任何时候都不应该被重写、继承,也不能被重新赋值。

  • Literal类型将表达式限定为特定的值或值的列表(不一定是同一个类型的值)。

  • TypedDict可以用来创建字典,其特定键的值被限制在一个或多个类型上。注意这些限制仅用于编译时确定值的合法性,而不能在运行时进行限制。

新版本的pickle协议

Python的pickle模块提供了一种序列化和反序列化Python数据结构或实例的方法,可以将字典原样保存下来供以后读取。不同版本的Python支持的pickle协议不同,而最新版本的支持范围更广、更强大、更有效的序列化。

Python 3.8引入的第5版pickle协议可以用一种新方法pickle对象,它能支持Python的缓冲区协议,如bytes、memoryviews或Numpy array等。新的pickle避免了许多在pickle这些对象时的内存复制操作。

NumPy、Apache Arrow等外部库在各自的Python绑定中支持新的pickle协议。新的pickle也可以作为Python 3.6和3.7的插件使用,可以从PyPI上安装。

可反转字典

Python3.6中重写了字典,其使用了PyPy项目贡献的一个新实现。除了更快、更紧凑之外,现在的字典还会继承元素的顺序——元素会按照添加的顺序排列,就像列表一样。Python 3.8还允许在字典上使用reversed()。

性能改进

  • 许多内置方法和函数的速度都提高了20%~50%,因为之前许多函数都需要进行不必要的参数转换。

  • 一个新的opcode缓存可以提高解释器中特定指令的速度。但是,目前实现了速度改进的只有LOAD_GLOBAL opcode,其速度提高了40%。以后的版本中也会进行类似的优化。

  • 文件复制操作如shutil.copyfile()和shutil.copytree()现在使用平台特定的调用和其他优化措施,来提高操作速度。

  • 新创建的列表现在平均比以前小了12%,这要归功于列表构造函数如果能提前知道列表长度的情况下进行的优化。

  • Python 3.8中向新型类(如class A(object))的类变量中的写入操作变得更快。operator.itemgetter()和collections.namedtuple()也得到了速度优化。

Python C API和CPython实现

Python最近的版本在CPython(C语言编写的Python的参考实现)中使用的C API重构方面下了很大功夫。到目前为止这些工作还在不断添加,现有的成果包括:

  • Python初始化配置(Python Initialization Configuration)有了个新的C API,可以实现对Python初始化例程更紧密的控制和更详细的反馈。如此一来,将Python运行时嵌入到其他应用程序中就会更容易,也可以以编程方式给Python程序传递启动参数。新的API还确保了所有Python配置控制都有一个单一的、一致的位置,因此以后的改变(如Python的新的UTF-8模式)也更为容易。

  • CPython的另一个新的C API——"vectorcall"调用协议——可以实现针对Python内部方法更快的调用,而无需创建临时对象。该API依然不稳定,但已有了明显的改善。该API计划在Python 3.9中成熟。

  • Python运行时的审计钩子为Python运行时提供了两个API,可以用来勾住事件,从而保证测试框架、日志和审计系统等外部工具能够监视到它们。

如何下载Python 3.8

请点击下方链接,从Python 软件基金会下载Python 3.8 beta版:

  • https://www.python.org/downloads/release/python-380b1/

原文:https://www.infoworld.com/article/3400640/the-best-new-features-in-python-38.html?upd=1560521475943

本文为 CSDN 翻译,转载请注明来源出处。

人工智能学习路线+实战训练

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

【END】

CSDN 5G免费沙龙来啦!

6月29日,微软(中国)首席技术官韦青、北京邮电大学信息与通信工程学院多媒体技术教研中心主任/博士生导师孙松林、爱立信中国研发部多天线高级专家朱怀松、爱立信中国研发部主任系统工程师刘阳等行业内顶尖的领军者、资深的技术专家们共聚一堂,共同探讨5G在物联网中的巨大潜能。

扫描下方二维码,即刻免费报名!

 热 文 推 荐 

☞任正非:华为不会拆分;以色列公司称可解锁所有 iOS 设备;Java 13 要来了! | 极客头条

华为手机出货量下调 60%?

2019 年开源数据库报告发布:MySQL 仍卫冕!

那些去德国的程序员后来怎么样了?

独家对话V神! 质疑之下的以太坊路在何方?

☞苹果宣布加入CNCF;华为要求美国运营商支付专利费;微软删除最大的公开人脸识别数据集

☞阿里巴巴杨群:高并发场景下Python的性能挑战

新技术“红”不过十年,半监督学习为什么是个例外?

☞老码农冒死揭开编程黑幕:这些Bug让我认输,谁踩谁服!

点击阅读原文,立刻报名 5G 沙龙。

你点的每个“在看”,我都认真当成了喜欢

Python 3.8 新功能大揭秘相关推荐

  1. python3.8.5怎么用-Python 3.8 新功能大揭秘【新手必学】

    最新版本的Python发布了!今年夏天,Python 3.8发布beta版本,在2019年10月14日,第一个正式版本已准备就绪.现在,我们都可以开始使用新功能并从最新改进中受益. Python 3. ...

  2. 手机python 3.8解释器_不看后悔!Python 3.8 新功能大揭秘

    赋值表达式遵循了Python一贯简洁的传统,就像列表解析式一样.其目的在于避免在特定的Python编程模式中出现一些枯燥的样板代码.例如,上述代码用一般写法需要多写两行代码. 2.仅通过位置指定的参数 ...

  3. python3.8怎么打开创建_Python 3.8 新功能大揭秘【新手必学】

    最新版本的Python发布了!今年夏天,Python 3.8发布beta版本,在2019年10月14日,第一个正式版本已准备就绪.现在,我们都可以开始使用新功能并从最新改进中受益. Python 3. ...

  4. python3 批量定义多个变量_Python 3.8 新功能大揭秘

    Python 3.8是Python语言的最新版本,它适合用于编写脚本.自动化以及机器学习和Web开发等各种任务.现在Python 3.8已经进入官方的beta阶段,这个版本带来了许多语法改变.内存共享 ...

  5. jQueryHTML5 UI框架Ignite UI 13.2新功能大揭秘(二)

    Ignite UI框架新功能 兼容jQuery 2.0. 浏览器历史记录支持整合开源history.js库. 在触屏设备上为所有Ignite UI组件执行"fast click"功 ...

  6. python就业方向及工资-【行情分享】python就业方向与薪资大揭秘

    原标题:[行情分享]python就业方向与薪资大揭秘 学python,我们要首先问自己,是为了转行?提升自己?还是什么,有了明确的目标,才会沉下心来学习.我学习python的目标是想要转行,可以跟大家 ...

  7. python3.7和3.8的区别-Python 3.8 新功能来一波(大部分人都不知道)

    Python 是一门广受好评的编程语言,每个版本的更新都会对开发社区带来一定影响.近日,Python 3.8 已进入 beta 2 版本的测试中,各项新特性已经添加完毕,最终版本预计于今年 10 月发 ...

  8. 畅享10e会有鸿蒙吗,功能虽小作用很大 华为畅享10e隐藏功能大揭秘

    原标题:功能虽小作用很大 华为畅享10e隐藏功能大揭秘 如今使用手机游戏.观影.听音乐.刷短视频.拍照等多种多样的娱乐方式,充斥着年轻人生活之中.作为年轻用户娱乐的重要载体,现在的手机不仅硬件强大,在 ...

  9. csgo客服端文件与比赛服务器,B5全新客户端功能大揭秘 自定义比赛功能篇

    B5对战平台从创立伊始便立志成为国内专业的CS:GO对战平台,因此B5签约了国内众多职业战队也举办了很多CS:GO比赛,不管是职业玩家还是民间大神都可以在B5对战平台找到自己的归宿.然而有很多玩家和裁 ...

最新文章

  1. 面试 HTTP ,99% 的面试官都爱问这些问题!
  2. 如果中国要做自己的GPT-3,一定离不开这家公司的算力
  3. 人生大道无形-----像水一样做人!!!
  4. 阅读笔记1(面试题功能测试-自动化提升效率)
  5. 判断是否在数组中,若在输入其下标,否则输入-1
  6. linux7.3怎么修改时区,CentOS7校准核对服务器时区和手动修改时间
  7. Spark精华问答 | Spark做大规模高性能数值计算可以吗?
  8. 20条.net编码习惯 【转】
  9. Wireshark网络封包分析软件——过滤表达式
  10. 遗传算法优化的bp神经网络_【首发推荐】农学:基于遗传BP神经网络的采摘机器人手眼标定研究...
  11. JavaWeb03-HTML篇笔记(二)
  12. 【原创】Linux下追加磁盘空间的方法
  13. 在MT4上使用KDJ指标
  14. Intouch通过ODBC连接MySQL
  15. ubuntu18.04安装nvidia驱动(戴尔G15_3060版本)
  16. 以太网MDIO总线调试笔记
  17. C语言:计算班级平均数
  18. 记一次烧毁AO3400的过程
  19. 为什么街头篮球总提示服务器维护,我玩街头篮球,但这几天它总是说连接不上服务器怎么回事?...
  20. 马云、张小龙、雷军缅怀金庸:江湖路远,侠义长存!

热门文章

  1. 23. 二叉搜索树的后序遍历序列
  2. java把字体做成滚动的_Scroll text - JS实现文字自动循环滚动效果
  3. seo模拟点击软件_百度快排软件原理分析
  4. 按下组合键 可以迅速锁定计算机,Win7锁定计算机快捷键是什么?Win7使用锁定计算机快捷键的方法...
  5. aboboo 上一句 快捷键_Aboboo——英语四六级神器
  6. 【Kalman】卡尔曼滤波器工作原理(Link)
  7. 金属热处理行业调研报告 - 市场现状分析与发展前景预测
  8. 中国酒器市场趋势报告、技术动态创新及市场预测
  9. 女程序员在GitHub提交PR更易被拒?开源世界“她”力量
  10. 像 C 一样快,Ruby 般丝滑的 Crystal 发布 1.0 版本,你看好吗?