Python 3.8 究竟要不要升级?用过之后的小哥这样说
人们推荐的名字,比如'assignment operator'、'named expression operator'、'becomes operator'等等,而不是像 walrus operator 这样的行话,会导致混淆。 关于 walrus 运算符的争论 关于 walrus 运算符的详细介绍就是这些,除此之外,Python3.8 也有其它新功能—— 仅位置参数(Positional-Only Arguments)这是新增的一个函数形参语法,用来指明某些函数形参必须使用仅限位置而非关键字参数的形式。这种标记语法与通过 help() 所显示的使用 Larry Hastings 的 Argument Clinic 工具标记的 C 函数相同。 在下面的例子中,形参 a 和 b 为仅限位置形参,c 或 d 可以是位置形参或关键字形参,而 e 或 f 要求为关键字形参:
以下均为合法的调用:
但是,以下均为不合法的调用:
这种标记形式的一个用例是它允许纯 Python 函数完整模拟现有的用 C 代码编写的函数的行为。另一个用例是在不需要形参名称时排除关键字参数。例如,内置的 len() 函数的签名为 len(obj, /)。 除了这一点,在 Python3.8 中,可以用 / 来表示必须通过仅位置参数之前的参数。这极大地方便了之前在自定义函数中,开发者没有简单的方法指定参数为仅位置参数的问题。
更多关于仅位置参数:https://www.python.org/dev/peps/pep-0570/ 用于已编译字节码文件的并行文件系统缓存新增的 PYTHONPYCACHEPREFIX 设置 (也可使用 -X pycache_prefix) 可将隐式的字节码缓存配置为使用单独的并行文件系统树,而不是默认的每个源代码目录下的 __pycache__ 子目录。 缓存的位置会在 sys.pycache_prefix 中报告 (None 表示默认位置即 __pycache__ 子目录)。 更详细内容:https://bugs.python.org/issue33499 调试构建使用与发布构建相同的 ABI不管是在发布模式还是调试模式下构建,Python 现在都使用相同的 ABI。在 Unix 上,当 Python 以调试模式构建时,现在可以加载以发布模式构建的 C 扩展和使用稳定 ABI 构建的 C 扩展 更详细内容:https://bugs.python.org/issue36721 f 字符串支持一个方便的 = 说明符进行调试=在 f-string 中添加了一个说明符。f 字符串(例如)f'{expr=}' 将扩展为表达式的文本、等号,然后扩展为求值表达式的表示形式。 更详细内容:https://bugs.python.org/issue36817 PEP 587:Python 初始化配置在 PEP 587 添加了新的 C API 以配置 Python 初始化,从而提供了对整个配置的更好控制和更好的错误报告。 新的结构:
新的函数:
更详细内容:https://www.python.org/dev/peps/pep-0587/ Vectorcall: 用于 CPython 的快速调用协议添加 "vectorcall" 协议到 Python/C API。它的目标是对已被应用于许多类的现有优化进行正式化。任何实现可调用对象的扩展类型均可使用此协议。 更详细内容:https://www.python.org/dev/peps/pep-0590/ 具有外部数据缓冲区的 pickle 协议 5当使用 pickle 在 Python 进程间传输大量数据以充分发挥多核或多机处理的优势时,非常重要一点是通过减少内存拷贝来优化传输效率,并可能应用一些定制技巧例如针对特定数据的压缩。 pickle 协议 5 引入了对于外部缓冲区的支持,这样 PEP 3118 兼容的数据可以与主 pickle 流分开进行传输,这是由通信层来确定的。 (编辑:我爱故事小小网_铜陵站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |