Unterstriche für Zahlen in IPython

Du hast eine Idee für ein Projekt?
Antworten
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13112
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

IPython unterstützt Autoformatting *nach* der Eingabe (`ipython --TerminalInteractiveShell.autoformatter=black`), da sollte man also relativ einfach zumindest einen eigenen Autoformatter reinmonkeypatchen können.

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'
Aber keine Ahnung, ob es da auch eine richtige API für gibt.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

__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.
Ich lese da heraus, dass du nicht so viel von der Idee hälst...?
Benutzeravatar
__blackjack__
User
Beiträge: 13112
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten