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 天后 ...
随机推荐
- Bitmap之extractAlpha函数抽取alpha值
package com.loaderman.customviewdemo; import android.app.Activity; import android.graphics.Bitmap; i ...
- KL距离(相对熵)
KL距离,是Kullback-Leibler差异(Kullback-Leibler Divergence)的简称,也叫做相对熵(Relative Entropy).它衡量的是相同事件空间里的两个概率分 ...
- 一百四十五:CMS系统之帖子加精和取消加精
模型 class HighlightPostModel(db.Model): """ 帖子加精信息 """ __tablename__ = ...
- python 基础之确认文件是否存在
def check_exist_bills(): file_dir=os.listdir('../db') bills_db_list=[] for item in file_dir: if item ...
- (九)Centos之搜索命令whereis、which和字符串搜索命令grep
一.Centos之命令搜索命令whereis与which 1.1 whereis 命令名(搜索命令所在路径及帮助文档所在位置) 选项: -b :只查找可执行文件位置 -m:只查找帮助文件 1.2 wh ...
- destoon 6.0 手机站支持在所有浏览器访问
我们的在本地调试destoon 6.0的手机站模板时,用浏览器的自带审查元素很不方便. 可是destoon 默认是在电脑端打不开手机站,如果这个设置能够去除掉,那就可以了. 去掉这个限制,指需要两步 ...
- docker 概念
前言: docker是一个开源的应用容器引擎,让开发这可以打包他们的应用以及依赖包到一个可以移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.容器是完全使用沙箱机制,互相之间不会有 ...
- 论文笔记: LSTD A Low-Shot Transfer Detector for Object Detection
背景知识: Zeroshot Learning,零次学习. 模型 对于 训练集 中 没有出现过 的 类别,能自动创造出相应的映射: X→Y. Low/Few-shot Learning.One-sho ...
- OpenGL学习笔记 之二 (色彩相关)
参考: http://www.cnblogs.com/FredCong/archive/2012/10/13/2722893.html 使用RGB #include <glut.h> #i ...
- BeginLinux Programming chapter16: X11桌面系统简介
当前两个最流行的linux desktop environment: GNOME 和KDE, 两者对应的图形库分别是 GTK+ 和 QT. GNOME与KDE与X11的关系: X defines no ...