String Python3.6将字符串转换为浮动-错误还是功能?

String Python3.6将字符串转换为浮动-错误还是功能?,string,python-2.7,casting,python-3.6,String,Python 2.7,Casting,Python 3.6,我正在处理字符串并从中提取浮点数,浮点数可以在字符串中的不同位置。然后我注意到Python版本2.7和3.6之间的不同行为。例如,包含非数字文本的字符串,如\uuuu 以下是我发现的总结: Python 2.7: [3]中的:浮点('0_001') ValueError:浮点()的文本无效:0_001 在[4]中: Python 3.6: [16]中的:浮点('0_001') Out[16]:1.0 我期望从演员阵容中获得的行为与2.7版本是一致的,而且由于0_001和1.0之间的距离非常大

我正在处理字符串并从中提取浮点数,浮点数可以在字符串中的不同位置。然后我注意到Python版本2.7和3.6之间的不同行为。例如,包含非数字文本的字符串,如
\uuuu
以下是我发现的总结:

Python 2.7:

[3]中的
:浮点('0_001')
ValueError:浮点()的文本无效:0_001
在[4]中:
Python 3.6:

[16]中的
:浮点('0_001')
Out[16]:1.0
我期望从演员阵容中获得的行为与2.7版本是一致的,而且由于
0_001
1.0
之间的距离非常大,我怀疑这在3.6版本中是一个相当大的错误,但我可能错了

如果我将版本3.6中的
\uu
文本替换为任何其他内容,例如
-*、
等,我将得到预期的
值错误:

如果这不是一个bug,而是一个特性,有人能向我解释为什么这样的演员阵容是有效的吗

Python 2.7版本:

Python 2.7.16 (default, Apr  6 2019, 01:42:57) 
IPython 5.8.0 -- An enhanced Interactive Python.
Python 3.6版本:

Python 3.6.9 |Anaconda, Inc.| (default, Jul 30 2019, 19:07:31) 
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
编辑: 根据Sach的回答,这是v3.6的实际功能,但我仍然不明白为什么会这样?它有什么作用

[2]中的
:浮点('0.0_1_2_3_4')
Out[2]:0.01234
从源代码和,您可以看到下划线的具体处理,同时从字符串转换浮点值

这在2.7中不存在,并从3.6中添加

它检查是否存在下划线,然后检查以下条件

  • 下划线只允许在数字之后
  • 仅允许在数字前加下划线
  • 结尾不允许使用下划线
  • 从源代码和中,您可以看到从字符串转换浮点时下划线的具体处理

    这在2.7中不存在,并从3.6中添加

    它检查是否存在下划线,然后检查以下条件

  • 下划线只允许在数字之后
  • 仅允许在数字前加下划线
  • 结尾不允许使用下划线
  • 应该包含您正在寻找的答案

    本PEP建议从字符串扩展Python的语法和数字 构造函数,以便下划线可以用作 整数、浮点数和复数中的数字分组目的 文字

    这是其他现代语言的一个共同特征,并有助于 长文字的可读性,或其值应清晰显示的文字 分成若干部分,如十六进制表示法中的字节或字

    它还描述了使用它们的规则。

    应该包含您正在寻找的答案

    本PEP建议从字符串扩展Python的语法和数字 构造函数,以便下划线可以用作 整数、浮点数和复数中的数字分组目的 文字

    这是其他现代语言的一个共同特征,并有助于 长文字的可读性,或其值应清晰显示的文字 分成若干部分,如十六进制表示法中的字节或字


    它还描述了使用它们的规则。

    谢谢!所以这是一个“特征”。。。然而,我的问题是为什么允许下划线,它的目的是什么?谢谢!所以这是一个“特征”。。。然而,我的问题是为什么允许下划线,它的目的是什么?目的是让更大的数字更容易让人阅读,比如
    1\u 000\u 000
    参见PEP 515谢谢!Thant现在说得通了。但是,在小数点之后肯定不允许这样做吗?所以这毕竟是一个bug:)
    0.000\u 000\u 1
    也更具可读性,它不是一个bug,谢谢!其目的是使更大的数字更易于人类阅读,如
    1\u 000\u 000
    参见PEP 515谢谢!Thant现在说得通了。但是,在小数点之后肯定不允许这样做吗?所以这毕竟是一个bug:)
    0.000\u 000\u 1
    也更具可读性,它不是一个bug,谢谢!