Bekanntlich erlaubt Python seit längerem das Einfügen von Unterstrichen bei Zahlenangaben. Diese werden bei der Ausgabe dann ignoriert. Grundsätzlich kann die Anordnung beliebig sein, solange links und rechts vom Strich eine Ziffer steht (eine Angabe wie 4_00_1 ist erlaubt). Aber sinnvollerweise können die Unterstriche z.B. als Tausendertrennzeichen eingesetzt werden.
Jetzt wäre es doch toll, wenn zumindest IPython ein Plugin hätte, welches die Unterstriche als Tausendertrennzeichen bereits während der Eingabe einsetzt. Dies müsste natürlich dynamisch geschehen und die Zahl nach jedem Tastendruck neu bewertet werden bzw. die Anordnung der Trenner entsprechend angepasst werden.
Kennt jemand da etwas Fertiges? Andernfalls überlege ich, dies selbst zu implementieren...
EDIT: Optional wäre auch ein Erkennen und Trennen von Bit-Angaben denkbar (z.B. in 4er-Gruppen). Das wäre mir im Moment nicht so wichtig, aber kann natürlich nicht schaden.
Unterstriche für Zahlen in IPython
- __blackjack__
- User
- Beiträge: 13185
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@snafu: Gibt es denn da schon etwas vergleichbares das *während* der Eingabe irgendwas mit der Eingabe anstellt? Das müsste ja die Eingabe auch verstehen, also was das syntaktisch gerade ist, also den gesamten Ausdruck, damit da nicht irgendwelche Unterstriche an Stellen eingefügt werden die syntaktisch gar kein Zahlliteral sind. Es gibt ja auch diese magischen Dinger mit %, oder ! um Shell-Kommandos auszuführen.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
IPython unterstützt Autoformatting *nach* der Eingabe (`ipython --TerminalInteractiveShell.autoformatter=black`), da sollte man also relativ einfach zumindest einen eigenen Autoformatter reinmonkeypatchen können.
Aber keine Ahnung, ob es da auch eine richtige API für gibt.
Code: Alles auswählen
$ ipython --TerminalInteractiveShell.autoformatter=black
Python 3.10.9 (main, Dec 19 2022, 17:35:49) [GCC 12.2.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.7.0 -- An enhanced Interactive Python. Type '?' for help.
# Eingabe: 1//2
In [1]: 1 // 2
Out[1]: 0
In [2]: import black
In [3]: black.format_str = lambda s, *args, **kwargs: s[::-1]
# Eingabe: 1+2
In [4]: 2+1
Out[4]: 3
# Eingabe: "Hello world"
In [5]: "dlrow olleH"
Out[5]: 'dlrow olleH'
Ich lese da heraus, dass du nicht so viel von der Idee hälst...?__blackjack__ hat geschrieben: ↑Sonntag 25. Dezember 2022, 16:05 @snafu: Gibt es denn da schon etwas vergleichbares das *während* der Eingabe irgendwas mit der Eingabe anstellt? Das müsste ja die Eingabe auch verstehen, also was das syntaktisch gerade ist, also den gesamten Ausdruck, damit da nicht irgendwelche Unterstriche an Stellen eingefügt werden die syntaktisch gar kein Zahlliteral sind. Es gibt ja auch diese magischen Dinger mit %, oder ! um Shell-Kommandos auszuführen.
- __blackjack__
- User
- Beiträge: 13185
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@snafu: Es ist weniger ob ich etwas davon halte sondern eher dass das nicht so einfach zu implementieren ist. Mir wäre das zu viel Aufwand für IMHO zu wenig nutzen.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis