the5fire的技术博客

关注Python、Django、Vim、Linux、Web开发、团队管理和互联网--Life is short, we need Python.


不太好升级的Python 3.7

作者:the5fire | 标签:   | 发布:2018-06-28 7:28 a.m. | 阅读量: 1597, 1244

Python3.7 新特性

  • 延迟加载的annotations,依赖from __future__ import annotations
  • datacalsses,可以看@伟明的文章,有详细介绍:http://www.dongwm.com/archives/attrs-%E5%92%8C-Python3-7-%E7%9A%84-dataclasses/(attrs 和 Python3.7 的 dataclasses),:

    @dataclass class Point: x: float y: float z: float = 0.0

  • breakpoint() - 省了每次都要import pdb;pdb.set_trace()

最升级影响比较大的是: * async和await是保留字了,意味着很多如果你项目里有定义这样的变量名就会报错。

其他的特性看网上介绍吧,有翻译。

刚才@伟明更新的一篇关于PEP 562的文章《Python 3.7 中的 PEP 562》可以看看。

历史的惯性和轮回

Python 3.7即将发布,但是要迁移上去并不容易,最大的一个问题在于async作为了保留字。在很多第三方库中多多少少会存在把模块或者变量定义为async的情况,即便是async已经出现了多年。

其他的库不知道,我只说我用到的库。在Guido发了关于3.7b4 release时我就进行了尝试,发现Celery和Kombu完全不能启动,直接抛出:SyntaxError: invalid syntax。

到现在为止最新版Kombu的库关于保留字的使用已经没有了,当时对于Celery来说,刚刚发布了4.2的版本,里面依然有保留字的使用。

所以,对于越庞大的物体,它的惯性越强。可能在很多年前它还是尝试新技术的先锋队,但当在新技术之上构建了很多新功能(业务)之后,就会变得不那么容易再来改变方向,也就会变成现在大家口头相传的:我靠,什么年头了,你们还在用这么老的版本,你看我们都直接上最新的。

殊不知,在很多年前,他们也曾自豪的说过同样的话。

推荐阅读:《Django源码解析- 视频版》前言-开篇词

- from the5fire.com
----EOF-----

微信公众号:Python程序员杂谈



其他分类: