¿Cómo utilizar separadores de dígitos para literales enteros de Python?

Resuelto Utkan Gezer asked hace 8 años • 4 respuestas

¿Hay alguna forma de agrupar dígitos en un código Python para aumentar la legibilidad del código? Lo intenté 'y _cuáles son separadores de dígitos de algunos otros idiomas, pero fue en vano.

Un operador extraño que concatene su lado izquierdo con su lado derecho también podría funcionar.

Utkan Gezer avatar Jul 02 '16 06:07 Utkan Gezer
Aceptado

Actualización unos años más tarde: Python 3.6 ahora es compatible con PEP515 , por lo que puede usar _ para mejorar la legibilidad literal flotante y entera.

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
>>>

Como referencia histórica, puede consultar el análisis léxico para definiciones estrictas python2.7 , python3.5 ...

Para python3.6.0a2 y versiones anteriores, debería aparecer un mensaje de error similar al:

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
mgilson avatar Jul 02 '2016 00:07 mgilson

Actualmente no existe un separador de miles en Python, pero puedes usar localeel módulo para convertir cadenas con dichos separadores a un int:

import locale
locale.setlocale(locale.LC_ALL, '')
locale.atoi("1,000,000")
scope avatar Jul 02 '2016 00:07 scope

No existe tal función en Python pero se propuso integrarla en el futuro.

Puedes ver la propuesta en el PEP515 .

Hamlett avatar Jul 02 '2016 00:07 Hamlett