⑴Python是面向对象、直译式计算机程序设计语言,也是一款功能强大的通用型语言,体积小巧,界面简洁,具有非常简洁而清晰的语法特点,可以帮助用户快速编写代码,且代码的运行速度非常快。
⑵Python中重写了字典,其使用了PyPy项目贡献的一个新实现。除了更快、更紧凑之外,现在的字典还会继承元素的顺序——元素会按照添加的顺序排列,就像列表一样。
⑶、Typing模块的改进
⑷Python是动态类型语言,但可以通过typing模块添加类型提示,以便第三方工具验证Python代码。Python给typing添加了一些新元素,因此它能够支持更健壮的检查:
⑸final修饰器和Final类型标注表明,被修饰或被标注的对象在任何时候都不应该被重写、继承,也不能被重新赋值。
⑹、仅通过位置指定的参数
⑺仅通过位置指定的参数是函数定义中的一个新语法,可以让程序员强迫某个参数只能通过位置来指定。这样可以解决Python函数定义中哪个参数是位置参数、哪个参数是关键字参数的模糊性。
⑻、新版本的pickle协议
⑼Python引入的第版pickle协议可以用一种新方法pickle对象,它能支持Python的缓冲区协议,如bytes、memoryviews或Numpy array等。新的pickle避免了许多在pickle这些对象时的内存复制操作。
⑽Python最明显的变化就是赋值表达式,即:=操作符。赋值表达式可以讲一个值赋给一个变量,即使变量不存在也可以。它可以用在表达式中,无需作为单独的语句出现。
⑾while (line := file.readline( != “end”: print(chunk“end”:
⑿print(chunk
⒀上例中,如果变量line不存在则会被创建,然后将file.readline(的返回值赋给它。然后检查line是否为“end”。如果不是,则读取下一行,保存在line中,然后继续测试。
⒁赋值表达式遵循了Python一贯简洁的传统,就像列表解析式一样。其目的在于避免在特定的Python编程模式中出现一些枯燥的样板代码。例如,上述代码用一般写法需要多写两行代码。
⒂、多进程共享内存
⒃在Python中,multiprocessing模块提供了SharedMemory类,可以在不同的Python进城之间创建共享的内存区域。
⒄在旧版本的Python中,进程间共享数据只能通过写入文件、通过网络套接字发送,或采用Python的pickle模块进行序列化等方式。共享内存提供了进程间传递数据的更快的方式,从而使得Python的多处理器和多内核编程更有效率。
⒅共享内存片段可以作为单纯的字节区域来分配,也可以作为不可修改的类似于列表的对象来分配,其中能保存数字类型、字符串、字节对象、None对象等一小部分Python对象。
⒆、支持f字符串调试
⒇f字符串格式可以更方便地在同一个表达式内进行输出文本和值或变量的计算,而且效率更高。
⒈x = print(f‘{x+}’
⒉print(f‘{x+}’
⒊在f字符串表达式末未添加=可以输出f表达式本身的值,后面是计算后的值
⒋x = print (f‘{x+=}’
⒌print (f‘{x+=}’
⒍、许多内置方法和函数的速度都提高了%~%,因为之前许多函数都需要进行不必要的参数转换。
⒎、一个新的opcode缓存可以提高解释器中特定指令的速度。但是,目前实现了速度改进的只有LOAD_GLOBAL opcode,其速度提高了%。以后的版本中也会进行类似的优化。
⒏、文件复制操作如shutil.copyfile(和shutil.copytree(现在使用平台特定的调用和其他优化措施,来提高操作速度。
⒐、新创建的列表现在平均比以前小了%,这要归功于列表构造函数如果能提前知道列表长度的情况下进行的优化。
⒑、Python中向新型类(如class A(object的类变量中的写入操作变得更快。operator.itemgetter(和collections.namedtuple(也得到了速度优化。
⒒、CPython的另一个新的C API——“vectorcall”调用协议——可以实现针对Python内部方法更快的调用,而无需创建临时对象。该API依然不稳定,但已有了明显的改善。