Python 3.7的新特性
Python 3.7为数据处理、脚本编译和垃圾收集优化以及更快的异步I/O添加了许多新类。
python是一种旨在简化复杂任务的语言。python 3.7的最新版本已经正式休闲鹿进入beta发布阶段。Python3.7的最终版本将于2018年6月发布,但之后Python3.7将不再增加新功能。
python 3.7最重要的新增和改进如下:
使用类时减少样板代码中的数据类数。
可能不向后兼容的更改涉及处理生成器中的异常。
面向解释器的“开发模式”。
具有纳秒分辨率的时间对象。
环境中默认使用utf-8编码的utf-8模式。
触发调试器的新内置函数。
Python数据类
众所周知,Python是处理结构化数据的一种快捷方便的方法python提供类来组织管理结构并将常见行为与数据实例关联起来,但是具有许多初始值设定项的类有一个长期的缺点:它们需要大量样板代码来创建。
所以生成的类就像一个普通的Python类一样运行您还可以声明某些字段是“冻结”或不可变的,并自动(或手动重写)创建属性的特殊方法,例如“hash”或“repr.”。
Python生成器异常处理
如PEP 479(https://www.python.org/dev/peps/PEP-0479/)所述,随着时间的推移,开发了一个更改,使人们更容易调试python生成器引发的stopiteration异常以前,生成器在遇到另一个问题时很容易导致停止迭代,而不是因为它没有要迭代的内容这会导致一大堆难以跟踪的代码缺陷。
在Python3.7中,在生成器抛出StopIteration异常之后,StopIteration异常将被转换为Runtimeerror异常,这样它就不会悄悄地影响应用程序的堆栈框架。这意味着一些对如何处理生成器行为不太敏感的程序会在Python3.7中抛出运行时错误。在Python3.6中,此行为生成一个不推荐警告;在Python3.7中,它生成一个完整的错误。
一个简单的方法是在传播stopiteration时使用try/except代码片段将其捕获到生成器外部一个更好的解决方案是重新思考如何构建生成器——例如,使用return语句终止生成器,而不是手动引发stopIteration。要了解更多关于如何在现有代码中修复此问题以及如何在新代码中防止该问题,请参见PEP 469(http://www. Python .org/DEV/PEPS/PEP-079/)。
python开发模式
python解释器的新命令行开关:-x允许开发人员为解释器设置许多低级选项。在Python3.7中,选项-x dev启用“开发模式”,这是一种运行时检查机制,通常对性能有重大影响,但在调试期间对开发人员很有用。
-X dev激活选项包括:
异步模块的调试模式这为异步操作提供了更详细的日志记录和异常处理,这些操作可能很难调试或推理。
内存分配器的调试挂钩。这对于编写cpython扩展的人很有用。它允许更清晰的运行时检查来查看Cpython如何在内部分配和释放内存。
启用faulthandler模块,以便在崩溃后始终转储回溯。
纳秒分辨率的python时间函数
python 3.7中的一种新型时间函数以纳秒精度返回时间值。尽管python是一种解释性语言,但python的核心开发人员victor stinner提倡报告纳秒级精度的时间。主要原因是,在处理转换其他程序(如数据库)记录的时间值时,可以避免丢失精度。
新的时间函数使用后缀“ns”。例如,纳秒时间。过程?Time()是时间过程?时间?Ns()请注意,并非所有时间函数都有纳秒版本,因为有些函数并没有从中受益。
python utf-8模式
Python一直支持UTF-8,以便轻松处理字符串和文本但是周围环境中的语言环境仍然是ASCII,而不是UTF-8现场检测机制并不总是可靠的。
python 3.7添加了所谓的“utf-8模式”,可以通过-x命令行开关启用该模式。该模式假设UTF-8是环境提供的语言环境在posix中,utf-8模式默认启用,但在其他位置默认禁用,以避免破坏向后兼容性。默认情况下,尝试启用utf-8模式是值得的,但是在生产环境中不应该启用它,除非您确定python使用utf-8与周围环境进行所有交互。
内置断点()函数
Python附带了一个内置的调试器,但它也可以连接到第三方调试工具,只要它们可以与Python的内部调试API进行对话然而,到目前为止,python还缺乏一种标准化的方法来从python应用程序中以编程方式触发调试器。
python 3.7添加了breakpoint(),这是一个内置函数,允许在调用函数时执行切换到调试器。相应的调试器不一定是python自己的pdb,它可以是先前设置为首选调试器的任何调试器。在过去,调试器必须手动设置和调用,这使得代码更加冗长。使用breakpoint(),您可以只使用一个命令调用调试器,并在设置调试器和调用调试器之间明确说明。
其他新的Python3.7特性
Python3.7还有许多其他的变化。以下是使用最新版本的Python时可能遇到的一些其他功能:
线程本地存储支持的C-API
如PEP 539(https://www.python.org/dev/peps/PEP-0539/)所述,线程特定存储(TSS)API取代了旧的。
Python 3.7的新特性的更多相关文章
- Python 3之bytes新特性
转载: Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分. 文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示. Python 3不会以任意隐式的方 ...
- Python - 3.8 新特性之仅位置参数 & 仅关键字参数
前置知识 Python 函数:https://www.cnblogs.com/poloyy/p/15092393.html 什么是仅限位置形参 仅限位置形参是 Python 3.8 才有的新特性 新增 ...
- Atitit python3.0 3.3 3.5 3.6 新特性 Python2.7新特性1Python 3_x 新特性1python3.4新特性1python3.5新特性1值得关注的新特性1Pyth
Atitit python3.0 3.3 3.5 3.6 新特性 Python2.7新特性1 Python 3_x 新特性1 python3.4新特性1 python3.5新特性1 值得关注的新特性1 ...
- Python 3 初探,第 1 部分: Python 3 的新特性
Python 3 是 Guido van Rossum 功能强大的通用编程语言的最新版本.它虽然打破了与 2.x 版本的向后兼容性,但却清理了某些语法方面的问题.本文是系列文章中的第一篇,介绍了影响该 ...
- Python 3.8 新特性来袭
Python 3.8 新特性来袭 Python 3.8是Python语言的最新版本,它适合用于编写脚本.自动化以及机器学习和Web开发等各种任务.现在Python 3.8已经进入官方的beta阶段,这 ...
- Python 3.8.0 正式版发布,新特性初体验
北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性. 赋值表达式 PEP 572: Assignment Expressi ...
- Python 3 新特性:类型注解——类似注释吧,反正解释器又不做校验
Python 3 新特性:类型注解 Crossin 上海交通大学 计算机应用技术硕士 95 人赞同了该文章 前几天有同学问到,这个写法是什么意思: def add(x:int, y:int) - ...
- Python 3.8.0 正式版发布,新特性初体验 全面介绍
Python 3.8.0 正式版发布,新特性初体验 北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性. 赋值表达式 PE ...
- Python 3.9 新特性:任意表达式可作为装饰器!
一个月前(2月20日),一则新的 PEP 没有受到任何阻碍就被官方采纳了,这么快的速度,似乎并不多见. 然而,更为高效率的是,仅在半个月内,它的实现就被合入了代码仓.也就是说,我们最快有望在 3 天后 ...
随机推荐
- 【转载】 一文看懂深度学习新王者「AutoML」:是什么、怎么用、未来如何发展?
原文地址: http://www.sohu.com/a/249973402_610300 原作:George Seif 夏乙 安妮 编译整理 ============================= ...
- IDEA启动tomcat报错:java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext、ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component
先看错误日志: -May- ::.M26 -May- :: :: UTC -May- ::29.845 信息 [main] org.apache.catalina.startup.VersionLog ...
- 【产品】C转B
http://www.woshipm.com/pmd/2780830.html 这篇文章总结的不错.
- Nginx+keepalived 高可用双机热备(主从模式/双主模式)
基础介绍负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行. 关于负载均衡介绍,可以参考:li ...
- react如何在网页上编辑并运行代码?
最近想做个能在网站,能在网页上运行代码,并且保存这个组件,看了一下element-react的组件和官方的实例,发现都是可以编辑运行的,因为之前没有这方面的经验,所以看下各位大佬能不能给点意见
- cocos creator 实现打字机的效果
作为一个萌新,我只想说我是没有感情的粘贴工具! let richText = this.viewNode.getChildByName('richText').getComponent(cc.Rich ...
- sas(Serial Attached SCSI)技术详解
1.什么是SAS 即串行SCSI技术,是一种磁盘连接技术,它综合了并行SCSI和串行连接技术(FC,SSA,IEEE1394)的优势,以串行通讯协议为协议基础架构,采用SCSI-3扩展指令集,并兼容S ...
- C++中pair详解
pair是定义在<utility>中的生成特定类型的模板,它的作用是把一组数据合并为一体,实际上是一个拥有两个成员变量的struct. 创建一个pair对象时,需要提供两个数据类型(不要求 ...
- Java线程安全队列Queue实现原理
原文链接:https://www.cnblogs.com/DreamRecorder/p/9223016.html 在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列.J ...
- 工作总结--CTO(张王岩)IO的正式使用
4个抽象类 InputStreawm int read() void close() OutputStream void write(int) void flush() void close() R ...