Die interessantesten Neuerungen:
- Zuweisungsausdruck:
Mit dem Operator new := können Sie Variablen innerhalb von Ausdrücken Werte zuweisen. Zum Beispiel:
wenn (n := len(a)) > 10:
print(f"Liste ist zu lang ({n} Elemente, erwartet <= 10)") - Nur positionelle Argumente:
Sie können jetzt angeben, 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 kein benanntes Argument sein
f(10, 20, 30, 40, 50, f=60) # Fehler, „e“ muss ein benanntes Argument seinDiese Änderung bietet Entwicklern die Möglichkeit, Benutzer ihrer APIs vor Änderungen an Funktionsargumentnamen zu schützen.
- Unterstützen Sie f-strings = für selbstdokumentierende Ausdrücke und Debugging:
Zucker hinzugefügt, um das Debuggen/Protokollieren von Nachrichten zu vereinfachen.
n = 42
print(f'Hallo Welt {n=}.')
# gibt „Hallo Welt n=42“ aus. - Das Schlüsselwort continue im „finally“-Block wurde korrigiert (es funktionierte vorher nicht).
Andere:
- Sie können anstelle des Standardpfads __pycache__ explizit den Pfad zum Bytecode-Cache angeben.
- Debug- und Release-Builds verwenden dasselbe ABI.
Source: linux.org.ru