python 3.8.7,python3.8.1怎么用
Python 3.8是Python语言的最新版本。它适用于脚本、自动化和各种任务,如机器学习和Web开发。现在Python 3.8已经进入正式测试阶段。这个版本带来了许多语法变化,内存共享,更有效的序列化和反序列化,改进的字典和更多的新功能。
Python 3.8还引入了许多性能改进。总的来说,我们即将拥有一个更快、更准确、更一致、更现代的Python。以下是Python 3.8的新特性和最重要的变化。
1.赋值表达式
Python 3.8最明显的变化是赋值表达式,即:=运算符。赋值表达式可以为变量赋值,即使该变量不存在。它可以在表达式中使用,而不会作为单独的语句出现。
在上面的例子中,如果变量line不存在,就会创建它,然后将file.readline()的返回值赋给它。然后检查线路是否“结束”。如果没有,读取下一行,保存到行中,然后继续测试。
赋值表达式遵循Python简单的传统,就像列表分析表达式一样。它的目的是在特定的Python编程模式中避免一些无聊的样板代码。比如上面的代码一般需要多写两行代码。
相关:《Python视频教程》
2.仅通过位置指定的参数
仅由位置指定的参数是函数定义中的新语法,它允许程序员强制一个参数仅由位置指定。这样可以解决Python函数定义中哪个参数是位置参数,哪个参数是关键字参数的歧义。
仅由位置指定的参数可用于以下情况:函数接受任何关键字参数,但也可以接受一个或多个未知参数。Python的内置函数通常都是这样,所以允许程序员这样做可以增强Python语言的一致性。
Python文档中给出的示例如下:
符号/将位置参数与关键字参数分开。在这个例子中,所有参数都是未知的。在Python的早期版本中,Z被认为是一个关键字参数。但是用上面的函数定义,pow(2,10)和pow(2,10,5)都是正确的调用方式,而pow(2,10,z=5)是不正确的。
3.支持f字符串调试
F-string格式可以更方便地在同一个表达式中计算输出文本和值或变量,效率更高。
4输出。
F字符串表达式末尾不加=可以输出F表达式本身的值,后面跟着计算出来的值。
输出是x 1=4。
4.多进程共享内存
在Python 3.8中,多处理模块提供了SharedMemory类,它可以在不同的Python城市之间创建共享内存区域。
在旧版本的Python中,进程间共享数据只能通过写文件,通过网络套接字发送,或者通过Python的pickle模块序列化来完成。共享内存提供了一种更快的方法在进程间传输数据,这使得Python的多处理器和多核编程更加高效。
共享内存片段可以作为纯字节区域分配,也可以作为未修改的类似列表的对象分配,其中可以存储少量的Python对象,如数字类型、字符串、字节对象和None对象。
5.Typing模块的改进
Python是一种动态类型语言,但是您可以通过类型模块添加类型提示,以便第三方工具可以验证Python代码。Python 3.8为类型添加了一些新元素,因此它可以支持更健壮的检查:
Final decorator和final type annotation表示被修饰或注释的对象在任何时候都不应该被重写、继承或重新分配。
文字类型将表达式限制为特定的值或值列表(不一定是同一类型的值)。
TypedDict可用于创建字典,特定键的值仅限于一种或多种类型。请注意,这些限制仅用于在编译时确定值的合法性,在运行时不能受到限制。
6.新版本的pickle协议
Python的pickle模块提供了一种序列化和反序列化Python数据结构或实例的方法,这种方法可以按原样保存字典供以后阅读。不同版本的Python支持不同的pickle协议,而最新版本支持更广泛、更强大、更高效的序列化。
Python 3.8推出的pickle协议第5版可以使用一个新的方法pickle object,它可以支持Python的buffer协议,比如bytes、memoryviews或者Numpy array。新的pickle避免了拾取这些对象时的许多内存复制操作。
NumPy、Apache Arrow和其他外部库在其Python绑定中支持新的pickle协议。新的pickle也可以作为Python 3.6和3.7的插件,可以从PyPI安装。
7.可反转字典
Python3.6重新编写了字典,使用了PyPy project提供的新实现。除了更快、更紧凑之外,今天的字典将继承元素的顺序。——个元素会按照加法的顺序排列,就像列表一样。计算机编程语言
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的新功能的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。