Как использовать разделители цифр для целочисленных литералов Python?

Есть ли способ группировать цифры в коде Python для повышения четкости кода? Я пробовал ' и _, которые разделители цифр некоторых других языков, но не помогло.

Также можно было бы выработать странный оператор, который соединяет его левую сторону правой рукой.

Ответы

Ответ 1

Обновление несколько лет спустя: 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.7, python3.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

Ответ 2

В настоящее время в Python нет разделителя тысяч, но вы можете использовать модуль locale для преобразования строки с такими разделителями в int:

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

Ответ 3

В Python такой функции нет, но было предложено интегрировать ее в будущем.

Вы можете увидеть предложение в PEP515.

Ответ 4

Самая близкая вещь, которую я видел в python, - это 12 * 1000 * 1000, что не является идеальным, но может быть полезно, если требуется 12000000. Однако, хотя в C они эквивалентны, поскольку во время компиляции он преобразует оба значения в одно и то же, python может не разделять эту оптимизацию.