Python 3.5¶
下面列出了 Python 3.5 已定稿/已接受的 PEP,并按其对 MicroPython 的影响进行了分组。
语法扩展 |
状态 |
|
额外的解包泛化 |
部分支持 |
|
新增的矩阵乘法运算符 |
完整支持 |
|
使用 |
完整支持 |
|
运行时的扩展与变更 |
||
针对二进制字符串的 % 格式化 |
完整支持 |
|
重试因 |
完整支持 |
|
更改生成器内部对 |
完整支持 |
|
标准库变更 |
||
|
||
|
完整支持 |
|
杂项变更 |
||
改进的 Python zip 应用支持 |
||
使 Python Launcher 能够识别虚拟环境 |
不相关 |
|
类型提示(仅供参考) |
完整支持 [1] |
|
取消 PYO 文件 |
不相关 |
|
重新设计扩展模块的加载方式 |
||
其他语言变更:
添加了 namereplace 错误处理程序。backslashreplace 错误处理程序现在可用于解码和转译。 |
|
属性(property)的文档字符串现在可写。这对 collections.namedtuple() 的文档字符串尤其有用。 |
|
现在支持涉及相对导入的循环导入。 |
新增模块:
对内置模块的变更:
OrderedDict 类现在以 C 实现,使其速度提升 4 到 100 倍。 |
|
OrderedDict.items()、OrderedDict.keys()、OrderedDict.values() 视图现在支持 reversed() 反向迭代。 |
|
deque 类现在定义了 index()、insert() 和 copy(),并支持 + 和 * 运算符。 |
|
由 namedtuple() 生成的文档字符串现在可以更新。 |
|
UserString 类现在实现了 __getnewargs__()、__rmod__()、casefold()、format_map()、isprintable() 和 maketrans() 方法,以与 str 的相应方法相匹配。 |
|
现在可以通过在新增的可选 key 关键字参数中传入一个 key 函数来自定义 merge() 中的元素比较,还可以使用新增的可选 reverse 关键字参数来反转元素比较。 |
|
新增了 BufferedIOBase.readinto1() 方法,它最多对底层原始流的 RawIOBase.read() 或 RawIOBase.readinto() 方法调用一次。 |
|
JSON 解码器现在会引发 JSONDecodeError 而非 ValueError,以便提供有关错误的更好的上下文信息。 |
|
math 模块新增了两个常量:inf 和 nan。 |
完整支持 |
新增的 isclose() 函数提供了一种测试近似相等的方法。 |
|
新增了 gcd() 函数。fractions.gcd() 函数现已弃用。 |
|
新增了 scandir() 函数,它返回一个由 DirEntry 对象组成的迭代器。 |
|
urandom() 函数现在在 Linux 3.17 或更新版本上使用 getrandom() 系统调用,在 OpenBSD 5.6 及更新版本上使用 getentropy(),从而无需使用 /dev/urandom,并避免了因潜在的文件描述符耗尽而导致的失败。 |
|
新增的 get_blocking() 和 set_blocking() 函数允许获取和设置文件描述符的阻塞模式(O_NONBLOCK)。 |
|
新增了 os.path.commonpath() 函数,它返回所传入各路径名中最长的公共子路径。 |
|
现在允许在后行断言中对固定长度的分组进行引用和条件引用。 |
|
正则表达式中捕获分组的数量不再限制为 100。 |
|
sub() 和 subn() 函数现在会用空字符串替换未匹配的分组,而不再引发异常。 |
|
re.error 异常新增了 msg、pattern、pos、lineno 和 colno 等属性,以便提供有关错误的更好的上下文信息。 |
|
带超时的函数现在使用单调时钟,而非系统时钟。 |
|
新增的 socket.sendfile() 方法允许通过套接字发送文件,它在 UNIX 上使用高性能的 os.sendfile() 函数,使上传速度比使用普通的 socket.send() 快 2 到 3 倍。 |
|
socket.sendall() 方法不再在每次接收或发送字节时重置套接字超时。现在套接字超时是发送全部数据的最大总时长。 |
|
socket.listen() 方法的 backlog 参数现在是可选的。默认情况下,它被设置为 SOMAXCONN 或 128 中较小的那个值。 |
完整支持 |
内存 BIO 支持 |
|
应用层协议协商支持 |
|
新增了 SSLSocket.version() 方法,用于查询当前实际使用的协议版本。 |
|
SSLSocket 类现在实现了 SSLSocket.sendfile() 方法。 |
|
SSLSocket.send() 方法现在在非阻塞套接字上,如果操作会发生阻塞,则会引发 ssl.SSLWantReadError 或 ssl.SSLWantWriteError 异常。此前,它会返回 0。 |
|
根据 RFC 5280,cert_time_to_seconds() 函数现在将输入时间解释为 UTC 而非本地时间。此外,返回值始终为 int。 |
|
新增的 SSLObject.shared_ciphers() 和 SSLSocket.shared_ciphers() 方法返回客户端在握手期间发送的加密套件列表。 |
|
SSLSocket 类的 SSLSocket.do_handshake()、SSLSocket.read()、SSLSocket.shutdown() 和 SSLSocket.write() 方法不再在每次接收或发送字节时重置套接字超时。 |
|
match_hostname() 函数现在支持匹配 IP 地址。 |
|
新增的 set_coroutine_wrapper() 函数允许设置一个全局钩子,每当 async def 函数创建协程对象时都会调用该钩子。相应的 get_coroutine_wrapper() 可用于获取当前设置的包装器。 |
|
新增的 is_finalizing() 函数可用于检查 Python 解释器是否正在关闭。 |
|
monotonic() 函数现在始终可用。 |
|
注释