如何使用Python整数文字的数字分隔符?

时间:2016-07-01 23:58:09

标签: python literals

有没有办法在Python代码中对数字进行分组以提高代码的可读性?我尝试了'_ digit separators的其他语言,但没有用。

将左手边与右手边连接在一起的奇怪操作符也可以解决。

4 个答案:

答案 0 :(得分:27)

几年后更新:Python 3.6现在支持PEP515,因此您可以使用_进行浮点数和整数字的可读性改进。

Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 1_1000
11000
>>>

对于历史参考,您可以查看严格定义的词法分析python2.7python3.5 ......

对于python3.6.0a2及更早版本,您应该收到类似于以下内容的错误消息:

Python 3.6.0a2 (v3.6.0a2:378893423552, Jun 13 2016, 14:44:21) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 1_000
  File "<stdin>", line 1
    1_000
        ^
SyntaxError: invalid syntax
>>> amount = 10_000_000.0
  File "<stdin>", line 1
    amount = 10_000_000.0
                      ^
SyntaxError: invalid syntax

答案 1 :(得分:5)

目前Python中没有千位分隔符,但您可以使用locale模块将带有此类分隔符的字符串转换为int:

import locale
locale.setlocale(locale.LC_ALL, '')
locale.atoi("1,000,000")

答案 2 :(得分:3)

Python中没有这样的功能,但建议将其集成到未来。

您可以在PEP515

中查看提案

答案 3 :(得分:2)

我在python中看到的最接近的是12 * 1000 * 1000,这不是理想的,但如果需要12000000则可能很有用。但是请注意,在C语言中,这些是等效的,因为在编译时它将两者转换为相同的东西,python可能不会共享此优化。