Python 3.8是Python语言的最新版本,它适合用于编写脚本、自动化以及机器学习和Web开发等各类任务。如今Python 3.8已经进入官方的beta阶段,这个版本带来了许多语法改变、内存共享、更有效的序列化和反序列化、改进的字典和更多新功能。python
Python 3.8还引入了许多性能改进。总的来讲,咱们即将拥有一个更快、更精确、更一致和更现代的Python。下面是Python 3.8的新功能和最重要的改变。程序员
1.赋值表达式编程
Python 3.8最明显的变化就是赋值表达式,即:=操做符。赋值表达式能够将一个值赋给一个变量,即便变量不存在也能够。它能够用在表达式中,无需做为单独的语句出现。缓存
while (line := file.readline()) != "end": print(chunk)
上例中,若是变量line不存在则会被建立,而后将file.readline()的返回值赋给它。而后检查line是否为"end"。若是不是,则读取下一行,保存在line中,而后继续测试。网络
赋值表达式遵循了Python一向简洁的传统,就像列表解析式同样。其目的在于避免在特定的Python编程模式中出现一些枯燥的样板代码。例如,上述代码用通常写法须要多写两行代码。数据结构
2.仅经过位置指定的参数框架
仅经过位置指定的参数是函数定义中的一个新语法,可让程序员强迫某个参数只能经过位置来指定。这样能够解决Python函数定义中哪一个参数是位置参数、哪一个参数是关键字参数的模糊性。机器学习
仅经过位置指定的参数能够用于以下状况:某个函数接受任意关键字参数,但也能接受一个或多个未知参数。Python的内置函数一般都是这种状况,因此容许程序员这样作,能加强Python语言的一致性。函数
Python文档中给出的例子以下:工具
def pow(x, y, z=None, /): r = x**y if z is not None: r %= z return r
符号 / 分隔了位置参数和关键字参数。在这个例子中,全部参数都是未知参数。在之前版本的Python中,z会被认为是关键字参数。但采用上述函数定义,pow(2, 10)和pow(2, 10, 5)都是正确的调用方式,而pow(2, 10, z=5)是不正确的。
3.支持f字符串调试
f字符串格式能够更方便地在同一个表达式内进行输出文本和值或变量的计算,并且效率更高。
x = 3 print(f'{x+1}')
输出4。
在f字符串表达式末未添加=能够输出f表达式自己的值,后面是计算后的值
x = 3 print (f'{x+1=}')
输出为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添加了一些新元素,所以它可以支持更健壮的检查:
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.性能改进
9.Python C API和CPython实现
Python最近的版本在CPython(C语言编写的Python的参考实现)中使用的C API重构方面下了很大功夫。到目前为止这些工做还在不断添加,现有的成果包括:
10.如何下载Python 3.8
从Python 软件基金会下载Python 3.8 beta版:https://www.python.org/downloads/release/python-380b1/