首页 后端开发 Python教程 一文了解Python 3.8的新功能

一文了解Python 3.8的新功能

Aug 19, 2019 pm 05:58 PM
新功能

一文了解Python 3.8的新功能

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

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

1.赋值表达式

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

1566206841(1).png

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

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

相关推荐:《Python视频教程

2.仅通过位置指定的参数

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

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

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

1566206865(1).png

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

3.支持f字符串调试

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

1566206884(1).png

输出4。

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

1566206896(1).png

输出为x+1=4。

4.多进程共享内存

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

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

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

5.Typing模块的改进

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

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

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

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

6.新版本的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上安装。

7.可反转字典

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

8.性能改进

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

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

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

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

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

9.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,可以用来勾住事件,从而保证测试框架、日志和审计系统等外部工具能够监视到它们。

10.如何下载Python 3.8

从Python 软件基金会下载Python 3.8 beta版:https://www.python.org/downloads/release/python-380b1/

以上是一文了解Python 3.8的新功能的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1662
14
CakePHP 教程
1419
52
Laravel 教程
1311
25
PHP教程
1261
29
C# 教程
1234
24
iPadOS18新功能 iPadOS18新功能 Jun 12, 2024 pm 10:41 PM

今日凌晨,苹果正式发布了iPadOS18,该系统不仅拥有iOS18当中的经典功能,而且还新增了一些独特的功能,例如支持数学笔记计算器等,进一步提升了iPad用户的体验感,感兴趣的朋友快来看看吧。此次iPadOS18不仅完美继承了iOS18的核心功能,如个性化的控制中心设计,允许用户根据个人偏好自由调整控制项顺序和布局,以及备受期待的游戏模式,为游戏玩家提供了更流畅、更沉浸的游戏体验,还特别针对iPad的大屏优势和ApplePencil的创造性用途,加入了多项独特功能,进一步拓展了iPad的生产力

微软Edge浏览器新功能'超级拖拽”上线! 微软Edge浏览器新功能'超级拖拽”上线! Mar 04, 2024 pm 06:31 PM

小编近日得知,微软Edge浏览器新功能“超级拖拽”上线,解锁新标签页打开链接第四种方式,方便用户更快打开链接。目前在微软Edge浏览器中,用户想要在新标签页中打开链接或者图像,有以下三种方式:1、右键链接或者图像,然后选择相应的操作选项。2、拖拽链接或者图像到标签页栏。3、使用鼠标滚轮点击链接或者图像。而“超级拖拽”带来了第四种交互操作,用户单击链接、部分文本或图像,然后将其横向、向上或向下拖动一点,即可在新标签页中打开它。用户拖拽文本之后,会默认调用Edge浏览器的默认搜索引擎,打开新的标签页

微信上线新功能:'安静模式” 微信上线新功能:'安静模式” Mar 04, 2024 pm 01:43 PM

据了解,微信上线了一个新功能:“安静模式”。开启后,微信在消息通知、音视频通话、视频号内容播放等所有场景下,都不会再发出声音。在iOS微信更新到最新版本,通过“微信”-“我”-“设置”-“关怀模式”-“安静模式”,就能开启。之后,微信在消息通知、音视频通话、视频号内容播放等所有场景下,都不会再发出声音。微信表示,这项功能是为了满足那些无法听到声音的人的需求而开发的。对于大多数人来说,声音可能是非常普通和易得的,但他们往往忽视了聋人群体并不具备这种感知能力,尽管他们也像其他人一样使用手机和微信。据

iOS18新功能爆料 iOS18新功能爆料 Mar 06, 2024 pm 02:25 PM

随着苹果即将发布其年度软件重大更新的iOS18,这无疑将成为2024年备受瞩目的热门版本之一。据传言,此次更新将堪称iPhone的史上升级规模最大的软件升级之一,下面就给大家简单总结一下相关的功能升级iOS18新功能爆料1、据悉,苹果或将融入visionOS式风格于iOS18中,给人以耳目一新的操作体验。2、据传闻,该公司正积极测试AI模型,有望在iOS18版本上对Siri进行重大改进。3、此外,近期苹果已展开试验计划,向AppleCare推出了名为"Ask"的全新工具,旨在提升客户答询效率。4

Windows 11详细介绍新特性 Windows 11详细介绍新特性 Dec 23, 2023 pm 03:37 PM

新的win11操作系统为用户们带来了很多的全新功能和特色,非常的新颖好用给力,而今天我们就给你们带来了win11有什么新功能详细介绍,如果你不清楚就快来详细了解一下吧。win11有什么新功能:1、Win11全新的设计使UI显得简洁美观,更加体现现代化。2、微软称在任务栏居中的开始菜单和应用图标能够让用户更加迅速地找到需要的内容。3、Win11的更新包比Win10平均少40%,也就是说这样运行起来更加的省电,速度也更快。4、内置的Edge浏览器速度也有所提升,在Win11上,新增了多个任务排列方式

win11预览版Paint画图应用更新 新增隐藏背景复制可见图层等 win11预览版Paint画图应用更新 新增隐藏背景复制可见图层等 Apr 11, 2024 pm 07:10 PM

除了Windows更新之外,微软今天开始还向Canary和Dev渠道推送了最新的画图(Paint)应用更新,版本号为11.2402.32.0。本次更新改进了画图中的画笔尺寸,为铅笔、画笔和橡皮擦工具添加了新的尺寸滑块。除此之外,微软还进一步改进了图层功能,例如在图层面板中添加新的背景选项,用户可以使用此选项设置画布的背景色。如图所示,你可以打开图层面板,然后单击底部的“背景”图块,或使用Ctrl+Shift+B快捷键,此时就会唤出颜色选择器对话框,然后你就可以选择任意你喜欢的颜色作

win10 1903版本的最新功能介绍 win10 1903版本的最新功能介绍 Jan 01, 2024 pm 01:33 PM

在微软再一次推出了新版本win101903之后,小伙伴们一定很想知道这次更新微软又推出了什么新功能吧。据小编所知,此次更新除了修复了之前版本出现在bug和功能缺陷之外,还新增了内置应用可以卸载、亚克力效果的LightTheme、黑白混搭背景等等新内容。win10最新版本1903新功能1、内置应用可以卸载win10系统会内置各种应用,现在win101903可以卸载一部分内置应用。卸载仅限于一般应用,至于Edge、应用商店无法卸载,毕竟会牵涉到Win10的很多底层功能。2、亚克力效果的LightTh

PHP8的新功能及其对开发效率的提升进行深入解析 PHP8的新功能及其对开发效率的提升进行深入解析 Jan 13, 2024 am 11:33 AM

深入解析PHP8的新功能,提升开发效率!PHP8是PHP编程语言的最新版本,于2020年11月26日正式发布。这个版本带来了许多令人兴奋的新功能和改进,可以极大地提升开发效率。在本文中,我们将深入探讨PHP8的一些新功能,并提供具体的代码示例。一、JIT编译器PHP8引入了JIT(Just-In-Time)编译器,可以将一些热门的代码块进行实时编译,从而提

See all articles