Python PEP是否按照建议的/修订的方式实施,还是有回旋余地?

问题描述 投票:0回答:1

[我刚刚在PEP 3127中注意到(对字面量和int()参数进行合理的基数计算,以便例如010不再是有效的字面量,如果需要八进制,则必须为0o10), PEP的某一特定部分尚未实施。

我专门引用下面引用的部分:

Tokenizer异常处理

[如果无效令牌包含前导“ 0”,则异常错误消息应比当前的“ SyntaxError:无效令牌”更具信息性。它应该解释为十进制数字可能没有前导零,并且八进制数字在前导零之后需要一个“ o”。

但是,当我尝试使用这种(现在无效)的格式时,按照下面的记录,我仍然看到旧的(信息较少的)错误:

MyPromptHere> python3
Python 3.6.8 (default, Oct  7 2019, 12:59:55) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 010
  File "<stdin>", line 1
    x = 010
          ^
SyntaxError: invalid token

>>> int('010', 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 0: '010'

>>> _

现在我不是真的[[care关于这是一个奇怪的错误,因为我从奥秘错误中赚取了很多报酬:-),但是,据我了解,PEP甚至要经过修订过程。之后他们得到了赞助,所以我很好奇为什么这样做:

PEP的这一部分尚未实施;或
    PEP未被修订以反映实施的现实。
  • 或者这仅仅是使用“应该”一词比使用“必须”或“必须”之类的正常标准“所要求”的词要少用吗?我不确定这一点,因为根据上述成绩单,在处理int()的部分中似乎应遵循“应该”:
  • [int()异常处理

  • 对于使用字符串调用ValueError的任何调用引起的int()至少应在错误消息中至少显式包含基数,例如:ValueError: invalid literal for base 8 int(): 09[我刚刚在PEP 3127中注意到(对字面量和int()参数进行合理的基数计算,以便例如010不再是有效的字面量,如果八进制是...,则必须改为0o10 ...
    python language-lawyer standards pep
    1个回答
    0
    投票
    © www.soinside.com 2019 - 2024. All rights reserved.