热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python4.0将怎样发展?

最近讨论的Python4.0预计推出的新功能,代码名为“Ouroboros:自噬蛇当提出向后不兼容的更改时python-ideas的新手偶尔会提出“Python4000”的概念,这些

最近讨论的 Python 4.0 预计推出的新功能,代码名为“ Ouroboros: 自噬蛇 

当提出向后不兼容的更改时python-ideas的新手偶尔会提出“Python 4000”的概念,这些更 改不给当前合法的Python3代码提供明确的移植路径。毕竟,我们允许Python 3.0进行这种更改,那么为什么我们不允许它用于Python 4.0呢?

我现在已经听过那么多问题了(包括更关注的措辞“你做了一次大的向后兼容性突破,我怎么知道你不会再这样做了?”),我想我会在这里记录我的答案,所以我将来能够将人们引回来。

现在对 Python 4.0 的预测是什么?

我现在的预测就是Python 4.0只不过是“Python 3.9后的版本”。就是这样。对语言来说没有重大改变,没有主要向后兼容突破——从Python 3.9到4.0应该就像从Python 3.3 到3.4(或者从2.6到2.7)。我甚至预测稳定的应用程序二进制接口(Application Binary Interface)(在 PEP 384 中首次定义一样)会在这个过渡边界上保留。

按照当前语言特性发布的速度(大约每18个月),意味着我们可能会在2023年的某个时候看到Python 4.0,而不是看到Python 3.10。

那么 Python 将如何继续发展?

首先,Python 增强提议流程没有任何变化 —— 仍然提出了后向兼容的更改,添加了新模块(如 asyncio)和语言功能(如 yield from)以增强 Python 应用程序可用的功能。随着时间的推移,Python 3 在默认情况下提供的功能方面继续领先于 Python 2,即使 Python 2 用户可以通过第三方模块或 Python 3 的后端访问同等功能。

在解释器实现和扩展上竞赛还将继续探索增强Python的不同方法,包括PyPy对JIT编译器生成和软件事务存储的探索,以及在科学和数据分析社区中对充分利用现代CPU和GPU所提供的矢量化计算能力的面向阵列编程的探索。与其他虚拟机运行时(如JVM和CLR)的集成也有望随着时间的推移而改进,尤其是当Python在教育领域取得的进展可能使其作为嵌入式脚本语言在更多的应用程序的运行时的运行环境中更受欢迎。

对于向后不兼容的改动, PEP 387 提供了在Python 2系列中使用多年的方法的合理概述,并且至今仍然适用:如果某个功能被识别为过于有问题,那么它可能会被弃用并最终被移除。

然而,对开发和发布过程进行了许多其他变更,这使得在Python 3系列中不太可能需要这些弃用。

  • 正如CPython核心开发团队和Python Packaging Authority之间的协作,以及将pip安装程序与Python 3.4+的捆绑所揭示的,越加注重的Python Package Index,在它们能足够稳定适应相对较慢的语言更新周期之前,减少了将模块添加到标准库的压力。 

  • “临时API”概念(在PEP 411中引入)使得可以在提供标准向后兼容性保证之前,对可能从更广泛的反馈中受益的库和API应用“稳定”期。 

  • 很多累积的遗留行为确实在Python 3过渡中被清除了,而Python和标准库的新增功能要求比Python 1.x和Python 2.x时期要严格得多。 

  • “单一来源”Python 2/3库和框架的广泛开发强烈鼓励在Python 3中使用“文档弃用”,即使功能被更新的,首选的替代品替换。在这些情况下,文档中会放置弃用通知,建议新代码首选的方法,但不添加编程弃用警告。这允许现有代码(包括支持Python 2和Python 3的代码)保持不变(以牺牲新用户为代价,在维护现有代码库的任务时可能需要稍微学习一些)。 

从(多数是)英语到所有书面语言

同样值得注意的是,Python 3预计不会像它原来那样具有破坏性。在Python 3中所有与之相关的向后不兼容的改动中,许多严重的迁移障碍可以放在 PEP 3100 的一个小基点上:

  • 使所有字符串都是Unicode,并具有单独的bytes()类型。新的字符串类型将被称为'str'。 

PEP 3100是Python 3变更的基地,它被认为是毫无争议的,单独的PEP是没有必要的。这个特殊变化被认为是无争议的原因是因为我们使用Python 2的经验表明Web和GUI框架的作者是正确的:作为应用程序开发者明智地处理Unicode意味着确保所有文本数据从二进制转换为尽可能接近于系统边界,按照文本处理,然后转换回二进制以用于输出的目的。

遗憾的是,Python 2并不鼓励开发人员以这种方式编写程序 - 它大大模糊了二进制和文本数据之间的界限,并使开发人员难以将两者分开,更不用说在代码中了。因此,Web和GUI框架作者必须告知他们的Python 2用户“始终使用Unicode格式文本。如果不这样做,你可能会在处理Unicode输入时遇到晦涩难以处理的bug”。

Python 3是不同的:它在“二进制域”和“文本域”之间实现了更大的隔离,使得编写正常的应用程序代码变得更加容易,同时使得编写二进制及文本边界不太清晰的系统中的代码变得更加困难。我在 其他地方 更详细地介绍了Python 2和Python 3之间文本模型的实际变动。

Python 对 Unicode 支持的这场革命是发生在更大的计算文本操作迁移的背景下的,从仅支持英文的 ASCII(1963年正式定义),到“二进制数据+编码声明”的模型(包括 C/POSIX locale 和在20世纪八十年代后期引入的 Windows 代码页 系统)的复杂性以及从最初的 16 位 Unicode 标准版本(1991年发布)到相对全面的现代 Unicode 代码点系统(1996年首次定义,每几年发布一个包含了新的主要更新的版本)。

为什么要提这一点呢?因为这种切换到“默认情况下使用 Unicode”是对 Python3 中后向不兼容最具破坏性的,而不像其他改动(它们与语言本身相关性更高),它是文本数据表示和操作方式在更大行业广泛变化的一小部分。随着 Python 3 转换清除了语言特定问题,与 Python 早期版本相比,新语言功能的进入门槛要高得多,而且正在进行的从“带编码的二进制数据”切换到用于文本建模的 Unicode 的规模都比其他行业更广泛,我看不到任何需要 Python 3 样式后向兼容性中断和并行支持的更改。

相反,我希望我们能够在正常的变更管理流程中适应任何未来的语言演变,任何无法以这种方式处理的提案都会被否决,因为它会给社区和核心开发团队带来不可接受的高昂成本。

 

来源商业新知网,原标题:为什么 Python 4.0 不会像 3.0 一样?


推荐阅读
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • PL2303HXD电路图(USB转UART)介绍及应用
    本文介绍了PL2303HXD电路图(USB转UART)的特性和应用,该电路图可以实现RS232和USB信号的转换,方便嵌入到手持设备中。PL2303HXD作为USB/RS232双向转换器,可以将USB数据转换为RS232信息流格式发送给外设,并将RS232外设的数据转换为USB数据格式传送回主机。通过利用USB块传输模式和自动流量控制,PL2303HXD能够实现更高的数据传输吞吐量比传统的UART端口。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • 安装Tensorflow-GPU文档第一步:通过Anaconda安装python从这个链接https:www.anaconda.comdownload#window ... [详细]
author-avatar
手机用户2502909693
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有