Die spannendsten Neuerungen:
- Zuweisungs-Ausdruck:
Der neue Operator := ermöglicht die Zuweisung von Werten an Variablen innerhalb von Ausdrücken. Zum Beispiel:
if (n := len(a)) > 10:
print(f"Die Liste ist zu lang ({n} Elemente, erwartet <= 10)") - Positionsabhängige Argumente:
Jetzt kann angegeben werden, welche Funktionsparameter über die Syntax benannter Argumente übergeben werden können und welche nicht. Beispiel:
def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)f(10, 20, 30, d=40, e=50, f=60) # OK
f(10, b=20, c=30, d=40, e=50, f=60) # Fehler, `b` kann nicht benannt werden
f(10, 20, 30, 40, 50, f=60) # Fehler, `e` muss benannt werdenDiese Änderung gibt Entwicklern die Möglichkeit, Benutzer ihrer APIs vor Änderungen in den Namen der Funktionsargumente zu schützen.
- Unterstützung für f-Strings = für selbstdokumentierende Ausdrücke und Debugging:
Es wurde eine Vereinfachung für Debugging-/Logging-Nachrichten hinzugefügt.
n = 42
print(f'Hallo Welt {n=}.')
# напечатает "Hello world n=42." - Das Schlüsselwort continue in einem finally-Block wurde repariert (früher funktionierte es nicht).
Sonstiges:
- Der Pfad zum Bytecode-Cache kann explizit angegeben werden, anstelle des standardmäßigen __pycache__.
- Debug- und Release-Bauten verwenden dasselbe ABI.
Quelle: linux.org.ru
