替代的python实现版本号是否意味着它们提供相同的语法?

2024-05-16 19:45:47 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,Jython的版本是2.5.1,这是否意味着它在版本2.5.1时对cpython语法有一个并行的保真度?你知道吗


Tags: 版本语法jythoncpython保真度
3条回答

语法(和特性集)严格由前两个数字控制,每个2.5.*都声称实现相同的语法和特性集(就语言定义而言,而不是语言参考手册明确留给实现的方面而言:例如,Jython和IronPython的'buh'意思是“unicode字符串文字”,而CPython的意思是“字节字符串文字”)。在任何实现行中,较高的*意味着错误修复和/或优化不会影响语法和特性(除了修复在较低的*发生的实现错误(如果有的话))。你知道吗

因此,Jython2.5.1可以用任何CPython2.5.x代替任何值的x,并且它声称比Jython2.5更好(IMHO shd be2.5.0,但是在实践中没有使用尾随的.0),尽管不如Jython2.5.2,如果后者存在的话。但它并不是要模仿CPython2.5.1中的bug,这些bug是在CPython2.5.2或更高版本中修复的:毫无疑问,每个实现都有自己的bug,没有人声称bug是兼容的。你知道吗

一般来说是的,但从技术上讲,没有什么能阻止替代实现选择他们想要的任何版本号。你知道吗

同样需要注意的是,仅仅因为Jython2.5.1打算与CPython2.5.1匹配,并不意味着它们的行为完全相同或完全兼容——例如,考虑基于C的模块和获取底层字节码的工具。你知道吗

Python语言缺乏任何真正的标准体或正式规范,这意味着对于什么是“Python”以及什么是“实现定义的”没有明确的规则。你知道吗

这是正确的,或非常接近。Jython和IronPython已经更改了它们的编号方案,以匹配它们最接近实现其特性的CPython版本。你知道吗

相关问题 更多 >