Whats new in Python_3_7

查看原文

Python 3.7 的新货。

  • 内建 breakpoint() 函数,在需要的地方插上 breakpoint() 就能启动调试了。以及,可以通过 PYTHONBREAKPOINT 环境变量配置想用什么软件做当调试器,例如 web-pdb
  • Data Class 单纯的数据类,可以约束乱用 dict 的现象。
  • 可以在 module 级别写 __getattr__ // 有点像 quixote 的 _q_lookup..
  • 也可以在 module 级别写 __dir()__ -> List[str]
  • time.time_ns() 可以获得纳秒时间了,适合在 performance 排查时使用。
  • DeprecationWarning 只在测试和 main 的时候启用。
  • 可用标准库的 contextvars 实现类似 Flask g 的功能。
  • 以前要想读取包的非 Python 部分的文件,需要用 read(open(dirname/'data.txt')) 这样的代码,现在可以用 importlib.resources.read_binary('this.is.my.module', 'data.txt')
  • 有序 Dict。
  • Async/Await 是关键字。
  • 不用操作 asyncio loop 了,可以用 asyncio.run(coro)
  • python -X dev:开发者向的很多 debug 工具和运行时检查,也打开了 asyncio 的 debug mode,crash 的时候有 dump。