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 天后 ...
随机推荐
- Qt编写自定义控件39-导航标签
一.前言 在很多菜单导航界面中,当单击了二级菜单或者三级菜单以后,顶部会显示带箭头或者其他标识的导航标签,可以单击该标签快速切换到对应的界面,也作为指示当前处于哪一级菜单下的界面,主要在WEB中大肆流 ...
- MySQL 5.6 my.cnf优化后的标准配置(4核 16G Centos6.5 x64)
[client] port = 3306 socket = /var/lib/mysql/mysql.sock [mysql] #这个配置段设置启动MySQL服务的条件:在这种情况下,no-auto- ...
- Intellij IDEA 2016.3.4 注册激活--转
对于Intellij IDEA 2016.3.4 可以填写注册server http://jetbrains.tech 来激活. 参考:https://www.haxotron.com/jetbra ...
- 【Leetcode_easy】657. Robot Return to Origin
problem 657. Robot Return to Origin 题意: solution1: class Solution { public: bool judgeCircle(string ...
- office word 設置默認的縮放為100%, office word set default Zoom to 100% permanently
如題,今天剛好遇到一個老師不知道什麽原因造成Microsoft office word 每次打開都會縮放到70% ,所以google 了一下,還真有解決方法. 只要將默認的 使用者範本檔 Normal ...
- QtCreator中打开.ui文件时卡死崩溃的解决方法
问题 QtCreator中打开一个项目,在编辑器中打开普通的.cpp或.h等文件正常,构建正常,运行正常,但是打开ui文件(QtCreator自动调用designer)时会卡死然后崩溃退出. 解决方法 ...
- Spring 商品分类
实体商品示例代码 package cn.maxhou.entity; import java.io.Serializable; import java.math.BigDecimal; import ...
- bootstrapvalidator API 文档地址: http://bootstrapvalidator.votintsev.ru/api/
bootstrap验证插件 bootstrapvalidator 文档API 地址 (原始作者英文):http://bootstrapvalidator.votintsev.ru/api/ 具体使用( ...
- CVE-2019-0708 RDP MSF漏洞利用
CVE-2019-0708 RDP MSF漏洞复现 漏洞环境 使用 VMware 安装Windows7 X64 模拟受害机 Windows7 X64下载链接:链接: https://pan.baidu ...
- zabbix 部署包安装
关于zabbix的安装方式,官网提供了几种方法,分别是:部署包安装.源码安装.容器安装.容器安装我之前已经写过一篇,而现在这一篇是关于部署包安装的. 按照官网的说法,我们需要如下几个步骤: ...