2016-07-01 1 views
15

Gibt es eine Möglichkeit, Ziffern in einem Python-Code zu gruppieren, um die Lesbarkeit des Codes zu erhöhen? Ich habe versucht ' und _ das sind digit separators einiger anderer Sprachen, aber ohne Erfolg.Ziffernseparatoren in Python-Code

Ein seltsamer Operator, der seine linke Seite mit seiner rechten Seite verkettet, könnte auch funktionieren.

+0

können Sie das konkretisieren .. ein Beispiel geben? –

+2

Ich denke, er möchte zum Beispiel das Integer-Literal 31415926 durch 31_415_926 ersetzen. – Prune

+0

Ich bin mir nicht sicher, dass das implementiert ist. Es gibt Vorschläge, aber keine Implementierungen – Li357

Antwort

16

Update ein paar Jahre später: Python 3.6 unterstützt jetzt PEP515, und Sie können _ für Fließkomma und Integer Literal Lesbarkeit Verbesserung verwenden.

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

Für historische Referenz, können Sie bei der lexikalischen Analyse sucht strengen Definitionen python2.7, python3.5 ...

Für python3.6.0a2 und früher, sollten Sie eine Fehlermeldung ähnlich bekommen:

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 
3

Es gibt keine solche Funktion in Python, aber es wurde vorgeschlagen, es in der Zukunft zu integrieren.

Sie können den Vorschlag in der PEP515 sehen.

2

Die nächste Sache, die ich in Python gesehen habe, ist 12 * 1000 * 1000, die nicht ideal ist, aber nützlich sein kann, wenn 12000000 benötigt wird. Beachten Sie jedoch, während in C, diese sind äquivalent, denn zur Kompilierzeit konvertiert es beide auf die gleiche Sache, Python möglicherweise nicht teilen diese Optimierung.

+1

Wenn sie Literale sind, faltet Python die Konstanten. Es wird jedoch keine Faltung von Symbolen machen. – mgilson

+0

Danke. Ich dachte es würde, aber ich wollte keine schlechten Infos verbreiten. – TemporalWolf

+2

Für 12 Millionen würde ich '12e6' empfehlen und empfehlen. – ThoAppelsin

4

Derzeit gibt es keine Tausendertrennzeichen in Python, aber Sie können locale Modul verwenden Zeichenfolge mit solchen Separatoren in einen int zu konvertieren:

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