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 天后 ...
随机推荐
- 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_05-Feign远程调用-客户端负载均衡介绍
2 Feign远程调用 在前后端分离架构中,服务层被拆分成了很多的微服务,服务与服务之间难免发生交互,比如:课程发布需要调用 CMS服务生成课程静态化页面,本节研究微服务远程调用所使用的技术. 下图是 ...
- java的servlet执行过程是怎么样的?
java的servlet执行过程是怎么样 答: Servlet执行过程:程序第一次访问,会调用servlet的init()方法初始化(只执行一次),每次程序执行都会根据请求调用doGet()或者d ...
- Qt编写Onvif搜索及云台控制工具
一.前言 这个工具很早以前大概在2013年就想做了,后面杂七杂八的事情一再耽搁,记得当时最初用的是soap类来搜索和解析的,后面发现太大了,每次编译都要等好久,光源码文件加起来都快10MB了,而且函数 ...
- ideal配置使用Git
1.git简介 git是目前流行的分布式版本管理系统.它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响.也因此其近乎所有的操作都是本地执行,所以在断网的情况下任然可 ...
- java nio Files.newDirectoryStream用法
try(DirectoryStream<Path> dirStream = Files.newDirectoryStream(Paths.get(directory,"*.ts& ...
- Apache配置参数的优化
查看apache开启那些模块: apachectl -t -D DUMP_MODULES 1)KeepAlive On/Off KeepAlive指的是保持连接活跃,换一句话说,如果将KeepAliv ...
- Paper Mark2
论文:CBAM: Convolutional Block Attention Module 论文链接 pytorch代码 论文:Approach for Fashion Style Recogniti ...
- 第十一章 缓存机制——《跟我学Shiro》
转发地址:https://www.iteye.com/blog/jinnianshilongnian-2029217 跟我学Shiro 目录贴:跟我学Shiro目录贴 Shiro提供了类似于Spri ...
- 详解Nginx中HTTP的keepalive相关配置
http keepalive在http早期 ,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接.使用keep-alive可以改善这种状态,即在一次TCP连接 ...
- Git强制推送代码到多个远程仓库
git push -f origin master 注释: origin 远程仓库名, master 分支名,-f 为force,意为:强行.强制.