手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Python 3.8 新特性:walrus操作符、positional-only参数等等

[日期:2019-07-19] 来源:Linux公社  作者:醉落红尘 [字体: ]

本月早些时候,Python背后的团队宣布发布了Python 3.8b2,这是计划发布的四个beta版中的第二个。在计划于7月29日发布的第三个beta版之前,我们先来看看Python 3.8的一些关键特性。

如何在Ubuntu 18.04,16.04中安装Python 3.8 Beta  见  https://www.linuxidc.com/Linux/2019-07/159277.htm

“极具争议”的walrus操作符

walrus操作符是Chris Angelico、Tim Peters和Guido van Rossum去年在PEP 572(赋值表达式)中提出的。从那以后,Python社区对它进行了大量的讨论,许多人质疑它是否需要改进。其他人则很兴奋,因为操作符确实使代码可读性更强了。

在PEP讨论结束时,Guido van Rossum辞去了BDFL(终身仁慈的独裁者)的职务,创建了新的治理模式。在接受InfoWorld采访时,Guido分享道:“压垮骆驼的那根稻草是一个非常有争议的Python增强提案,在我接受之后,人们在Twitter等社交媒体上说了一些伤害我个人的事情。而有些说伤人的话的人实际上是Python核心开发人员,所以我觉得我不再那么信任Python核心开发团队了。”

根据PEP 572,赋值表达式是一个语法操作符,允许您将值作为表达式的一部分分配给变量。它的目标是简化诸如多模式匹配和所谓的一个半循环之类的事情。在PyCon 2019上,PyPI维护者Dustin Ingram给出了一些可以使用这种语法的例子:

  • 平衡代码和复杂性
  • 避免低效的理解
  • 避免范围内不必要的变量

该功能由Cuttlesoft的Python核心开发人员和创始人,工程总监Emily Morehouse实施,并于今年早些时候合并。

LWN.net的撰稿人Jake Edge在解释此功能带来的其他改进时写道:“这些和其他用途(例如列表和字典理解)有助于使程序员的意图更加清晰。 这是许多其他语言所具有的功能,但是Python在这一点上已经有近30年的历史了。 最后,它引起的所有骚动实际上是一个相当小的变化。“

Positional-only参数

在PEP 570中提出,这引入了一种新的语法(/)来指定Python函数定义中的Positional-only参数。 这类似于*表示其右边的参数只是关键字。 许多CPython内置和标准库函数已经使用了这种语法,例如pow()函数:

pow(x, y, z=None, /)

这种语法使库作者能够更好地表达API的预期用法,并允许API“以一种安全的、向后兼容的方式发展”。它为库作者提供了灵活性,可以在不中断调用的情况下更改位置参数的名称。此外,这还确保了Python语言与现有文档以及各种“内置”和标准库函数的行为的一致性。

与PEP 572一样,这个提议也得到了Python开发人员的不同反应。在支持方面,一名开发人员说,“Position-only参数已经存在于cpython内置类中,例如range和min。在语言级别上支持它们将使它们的存在不那么容易混淆,也不会有文档说明。”

对 f-strings的调试支持

格式化字符串(f-strings)是在Python 3.6中用PEP 498引入的。它使您能够将表达式计算为字符串的一部分,并插入函数调用的结果等等。在Python 3.8中,为了便于调试,还添加了add (=)说明符和a !d转换,从而进行了一些额外的语法更改。

你可以这样使用这个功能:

print(f'{foo=} {bar=}’)

这为开发人员提供了一种更好的“打印式调试”方式,特别是那些具有已经具有Perl,Ruby,JavaScript等功能的语言背景的人。

Python初始化配置

虽然Python是高度可配置的,但它的配置似乎分散在代码中。 PEP 587引入了一个新的C API来配置Python初始化,使开发人员能够更好地控制配置和更好的错误报告。 在这些改进中,这个API将带来包括在应用之前读取和修改配置的能力,以及覆盖Python如何计算模块搜索路径(“sys.path”)的能力。

除此之外,Python 3.8还有许多其他令人兴奋的功能,目前计划于10月推出,包括CPython的快速调用协议,Vectorcall,支持pickle protocol 5中的带外缓冲区等等。

您可以在Python官方网站上找到完整列表

更多Python相关信息见Python 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=17

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2019-07/159442.htm

linux
相关资讯       Python 3.8 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款