主要问题还是因为 Python 的动态性。因为python2有太多的设计缺陷,以至于python3如果要兼容Python2将会是一个几乎难以完成的任务,所以,guido放弃了对python2的兼容。同时,内置字符串从二进制存储改为 unicode 存储的步子太大了,导致这不只是语法方面的变化,而是整个运行时都变了。
python2有太多的设计缺陷,以至于python3如果要兼容Python2将会是一个几乎难以完成的任务,所以,guido放弃了对python2的兼容。
就拿字符来说,这是一个难以兼容的技术点,python诞生的年代比unicode还早,以至于使用asccii作为默认编码,字符串和字节没有严格界限,后来由因为需要支持unicode,所以直接引入了unicode类型,以至于经常遇到编码问题。
如果在设计python2的时候积极放弃对python1的支持,今天就没有分裂这回事了,所以根据墨菲定律,该发生的时候一定会发生,如果能及早的防范,受到的影响也会更小
主要问题还是因为 Python 的动态性,2to3 不是完全可靠的,改完还需要人工来改。不过更加痛苦的是,2to3 改出来的代码,只能在 Python3 下跑,造成了如果你想要提供一个库,并且 Python2 和 Python3 都有,你就不能使用这个工具来转换。
还是因为内置字符串从二进制存储改为 unicode 存储的步子太大了,导致这不只是语法方面的变化,而是整个运行时都变了。按你说的用标记的方式,来标记一个文件为 Python3 模式,语法解析不会遇到问题,但是这时候引用一个标准库的函数,Python2 中这个函数只接受二进制风格的字符串,Python3 里只接受 unicode 的字符串,那要怎么处理?
延伸阅读:
什么是Python?
Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。
文章标题:为什么Python2和Python3造就了社区分裂,发布者:小编,转载请注明出处:https://worktile.com/kb/p/39048