Python 3.5¶
以下是Python 3.5的最终/接受的PEP列表,根据它们对MicroPython的影响进行分组。
语法的扩展 |
状态 |
|
额外的解包概括 |
部分 |
|
一种新的矩阵乘法算子 |
完成 |
|
带有 |
完成 |
|
运行时的扩展和更改 |
||
%格式化二进制字符串 |
完成 |
|
重试因 |
完成 |
|
更改生成器内部的 |
完成 |
|
标准库更改 |
||
|
||
|
完成 |
|
其他变更 |
||
改进的Python zip应用程序支持 |
||
使Python启动器了解虚拟环境 |
不相关的 |
|
类型提示(仅供参考) |
完成 [1] |
|
消除PYO文件 |
不相关的 |
|
重新设计扩展模块加载 |
其他语言变化:
属性文档字符串现在是可写的。这对于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的相应方法。 |
|
*merge()*中的元素比较现在可以通过在一个新的可选key关键字参数中传递一个key函数来定制,并且一个新的可选*reverse*关键字参数可以用来反转元素比较 |
|
一个新的*BufferedIOBase.readinto1()*方法,该方法最多使用一次调用底层原始流的 RawIOBase.read() 或 RawIOBase.readinto() 方法 |
|
JSON解码器现在引发JSONDecodeError而不是ValueError,以提供有关错误的更好的上下文信息。 |
|
数学模块中增加了两个新的常量: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()*函数返回每个传递的pathname的最长公共子路径 |
|
在向后看断言中,现在允许对固定长度的组的引用和条件引用 |
|
正则表达式中捕获组的数量不再局限于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() 函数现在总是可用的 |
笔记