加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

Python 3.8 新特性全面解读

发布时间:2019-04-02 20:18:13 所属栏目:优化 来源:佚名
导读:副标题#e# 本文详细介绍 Python 3.8 中的新功能,以及和与 3.7 相比的一些不同点。 新功能 编译的字节码文件的并行文件系统缓存新的 PYTHONPYCACHEPREFIX设置 (也可用 )将隐式字节码缓存配置为使用单独的并行文件系统树,而不是每个源目录中的默认子目录
副标题[/!--empirenews.page--]

 Python 3.8 新特性全面解读

本文详细介绍 Python 3.8 中的新功能,以及和与 3.7 相比的一些不同点。

新功能

编译的字节码文件的并行文件系统缓存新的 PYTHONPYCACHEPREFIX设置(也可用 )将隐式字节码缓存配置为使用单独的并行文件系统树,而不是每个源目录中的默认子目录。-X pycache_prefix__pycache_报告缓存的位置sys.pycache_prefix(None表示pycache子目录中的默认位置)。

其他语言变更

一个continue说法是非法finally条款因与实施问题。在Python 3.8中,这一限制被取消了。

该int类型现在具有as_integer_ratio()与现有float.as_integer_ratio()方法兼容的新方法。

增加了对N{name}的支持。

Dictdictviews现在可以使用反向插入顺序进行迭代 reversed()

函数调用中允许关键字名称的语法进一步受到限制。特别是,f((keyword)=arg)不再允许。它从来没有打算在关键字参数赋值术语的左侧允许多于一个裸名称。见bpo-34641。

现在允许Iterable解包,而不使用括号yield 和return语句。(由David Cuthbert和Jordan Chapman在bpo-32117中提供。)

不是有效转义序列的反斜杠字符对DeprecationWarning从Python 3.6开始生成。在Python 3.8中它生成了一个SyntaxWarning代替。(由Serhiy Storchaka供稿于bpo-32912。)

SyntaxWarning在某些情况下,编译器会在元组或列表之前错过逗号时生成。例如:

  1. 1data = [ 
  2. 2    (1, 2, 3) # oops, missing comma! 
  3. 3    (4, 5, 6) 
  4. 4] 

子类之间的算术运算datetime.date或 datetime.datetimedatetime.timedelta对象现在返回子类的实例,而不是基类。这也会影响其实现(直接或间接)使用datetime.timedelta算术的操作的返回类型,例如 datetime.datetime.astimezone()

当Python解释器被Ctrl-C(SIGINT)中断并且KeyboardInterrupt未捕获到的结果异常时,Python进程现在通过SIGINT信号或正确的退出代码退出,以便调用进程可以检测到它因Ctrl而死亡-C。POSIX和Windows上的shell使用它来正确终止交互式会话中的脚本。

改进的模块

现在的_asdict()方法collections.namedtuple()返回一个dict而不是一个collections.OrderedDict。这是有效的,因为自Python 3.7以来,常规dicts已经保证了排序。如果需要额外的功能OrderedDict,建议的补救措施是将结果转换为所需的类型:OrderedDict(nt._asdict())。该unicodedata模块已升级为使用Unicode 12.0.0 版本。

ASYNCIO

在Windows上,现在是默认的事件循环ProactorEventLoop。

gettext

添加pgettext()及其变体。

检查

如果该属性是值为docstrings的位置,该inspect.getdoc()函数现在可以找到文档字符串。这提供了类似于我们已经有文件的选项,以及:__slots__dictproperty()classmethod()staticmethod()

  1. 1class AudioClip: 
  2. 2    __slots__ = {'bit_rate': 'expressed in kilohertz to one decimal place', 
  3. 3                 'duration': 'in seconds, rounded up to an integer'} 
  4. 4    def __init__(self, bit_rate, duration): 
  5. 5        self.bit_rate = round(bit_rate / 1000.0, 1) 
  6. 6        self.duration = ceil(duration) 
GC

get_objects()现在可以接收一个可选的生成参数,指示从中获取对象的生成。由Pablo Galindo 提供的 bpo-36016。

gzip

添加了mtime参数以gzip.compress()获得可重现的输出。(由Guo Ci Teo在bpo-34898供稿。)

idlelib和IDLE

超过N行的输出(默认为50)被压缩到一个按钮。可以在“设置”对话框的“常规”页面的PyShell部分中更改N. 右键单击输出可以挤压更少但可能超长的线条。通过双击按钮或通过右键单击按钮进入剪贴板或单独的窗口,可以扩展压缩输出。(由Tal Einat在bpo-1529353供稿。)

上述更改已被移植到3.7维护版本。

json.tool

添加选项--json-lines以将每个输入行解析为单独的JSON对象。(由Weipeng Hong在bpo-31553供稿。)

计算

增加math.dist()了计算两点之间欧氏距离的新函数。

扩展了math.hypot()处理多个维度的功能。以前,它只支持2-D案例。

添加了新函数,math.prod()作为类似函数sum() 返回“start”值(默认值:1)乘以可迭代数字的乘积。

os.path

os.path返回一个布尔值结果类似功能exists()lexists()isdir(), isfile()islink(),和ismount()现在回到False代替升高ValueError或它的子类 UnicodeEncodeError,并UnicodeDecodeError为包含字符或字节在OS级不可表示的路径。

expanduser()在Windows上现在更喜欢 USERPROFILE 环境变量,不使用 HOME,通常不为常规用户帐户设置。

ncurses

添加了一个新变量,其中包含底层ncurses库的结构化版本信息:ncurses_version。

pathlib

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读