Python 3.6¶
Python 3.6 beta 1于2016年9月12日发布,新特性的摘要可以在这里找到:
新的语法特性 |
状态 |
|
字面值字符串格式 |
完成 |
|
数字字面值中的下划线 |
完成 |
|
异步生成器 |
||
变量注释的语法(暂定) |
完成 |
|
异步的理解 |
||
新的内置功能 |
||
保持函数中*kwargs*的顺序 |
||
更简单的自定义类创建 |
||
保留类属性定义顺序 |
||
标准库更改 |
||
本地时间消除歧义 |
||
向标准库中添加Secrets模块 |
||
添加文件系统路径协议 |
||
CPython 内部机制 |
||
向dict添加私有版本 |
不会做 |
|
向CPython添加框架评估API |
||
Linux/Windows更改 |
||
使 |
||
将Windows控制台编码更改为UTF-8 |
||
将Windows文件系统编码更改为UTF-8 |
其他语言变化:
*全局*或*非局部*语句现在必须在文本上出现在同一作用域中受影响的名称的第一次使用之前。以前这是一个SyntaxWarning。 |
|
现在可以将一个特殊的方法设置为None,以表示相应的操作不可用。例如,如果一个类将 __iter__() 设置为 None ,则该类不可迭代。 |
|
长序列的重复回溯行现在缩写为*[前一行重复{count}多次]* |
|
Import现在在找不到模块时引发新的异常*ModuleNotFoundError*。当前检查 ImportError (在try-except中)的代码仍然可以工作。 |
|
依赖于零参数的类方法*super()*将在创建类期间从元类方法调用时正确工作。 |
对内置模块的更改:
已耗尽的*array.array*现在将保持耗尽状态,即使迭代数组被扩展。 |
|
b2a_base64()函数现在接受一个可选的换行关键字参数来控制是否将换行字符附加到返回值 |
完成 |
添加了新的cmath.tau (τ) 常数 |
|
新常量:cmath.inf*和*cmath.nan*用于匹配*math.inf*和*math.nan,还有*cmath.infj*和*cmath.nanj*用于匹配复数repr使用的格式 |
|
添加了新的Collection抽象基类来表示大小可迭代的容器类 |
|
新的 *Reversible*抽象基类代表了可迭代的类,这些类也提供了*__reversed__()*方法。 |
|
新的*AsyncGenerator*抽象基类表示异步生成器。 |
|
namedtuple() 函数现在接受一个可选的关键字参数module,该参数在指定时用于返回的命名元组类的*__module__* 属性。 |
|
*namedtuple()*的verbose和rename参数现在仅限关键字。 |
|
递归的*collections.deque*实例现在可以被pickle。 |
|
模块中增加BLAKE2哈希函数。*blake2b()*和*blake2s()*始终可用,并支持BLAKE2的完整功能集。 |
|
新增SHA-3哈希函数*sha3_224()*、sha3_256()、sha3_384()、sha3_512(),以及*SHAKE*哈希函数*shake_128()*、shake_256()。 |
|
基于密码的密钥派生函数*scrypt()*现在可以在OpenSSL 1.1.0及更新版本中使用。 |
|
*json.load()*和*json.loads()*现在支持二进制输入。编码后的JSON应该使用UTF-8、UTF-16或UTF-32来表示。 |
|
添加了新的math.tau (τ)常数 |
完成 |
一个新的*close()*方法允许显式关闭*scandir()*迭代器。*scandir()*迭代器现在支持上下文管理器协议。 |
|
在Linux上,*os.urandom()*现在阻塞,直到系统随机熵池初始化以增加安全性。 |
|
Linux getrandom() sycall(获取随机字节)现在公开为新的*os.getrandom()*函数。 |
|
添加了对正则表达式中修饰符跨度的支持。例如:’(?i:p)ython’ 匹配’python’和 ‘Python’,但不匹配’PYTHON’;’(?i)g(?-i:v)r’ 匹配 ‘GvR’ 和 ‘gvr’,但不匹配 ‘GVR’。 |
|
匹配对象组可以由 __getitem__*访问,相当于*group()。所以*mo[‘name’]*现在等价于*mo.group(‘name’)*。 |
|
Match对象现在支持将类似索引的对象作为组索引。 |
|
*ioctl()*函数现在支持*SIO_LOOPBACK_FAST_PATH*控制代码。 |
|
现在支持*getsockopt()*常量*SO_DOMAIN* ,SO_PROTOCOL, SO_PEERSEC*和*SO_PASSSEC。 |
|
setsockopt()*现在支持 *setsockopt(level, optname, None, optlen: int) 形式。 |
|
套接字模块现在支持地址系列*AF_ALG*与Linux内核加密API接口。添加了*ALG_*、SOL_ALG*和*sendmsg_afalg()。 |
|
新增Linux常量 TCP_USER_TIMEOUT 和 TCP_CONGESTION。 |
|
ssl支持OpenSSL 1.1.0。最低推荐版本为1.0.2。 |
|
3DES已从默认密码套件中删除,并添加了ChaCha20 Poly1305密码套件。 |
|
*SSLContext*对选项和密码有更好的默认配置。 |
|
使用新的*SSLSession*类可以将SSL会话从一个客户端连接复制到另一个客户端连接。TLS会话恢复可以加快初始握手速度,减少延迟,提高性能。 |
|
新的*get_ciphers()*方法可用于按密码优先级顺序获取已启用密码的列表。 |
|
所有常量和标志已转换为*IntEnum*和*IntFlags*。 |
|
为*SSLContext*添加了服务器端和客户端特定的TLS协议。 |
|
添加*SSLContext.post_handshake_auth*以启用和*ssl.SSLSocket.verify_client_post_handshake()*以启动TLS 1.3握手后认证。 |
|
现在通过 ‘e’格式说明符支持IEEE 754半精度浮点数。 |
|
新的*getfilesystemencodeerrors()*函数返回用于在Unicode文件名和字节文件名之间进行转换的错误模式的名称。 |
|
compress() 和*decompress()*函数现在接受关键字参数 |