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() 函数现在始终可用。 | |
注释