De mest interessante innovationer:
- Opgaveudtryk:
Den nye := operator giver dig mulighed for at tildele værdier til variabler i udtryk. For eksempel:
hvis (n := len(a)) > 10:
print(f"Listen er for lang ({n} elementer, forventet <= 10)") - Kun positionelle argumenter:
Du kan nu angive, hvilke funktionsparametre der kan sendes gennem navngivne argumentsyntaks, og hvilke der ikke kan. Eksempel:
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) # fejl, "b" kan ikke være et navngivet argument
f(10, 20, 30, 40, 50, f=60) # fejl, "e" skal være et navngivet argumentDenne ændring giver udviklere en måde at beskytte brugere af deres API'er mod ændringer i funktionsargumentnavne.
- Support f-strenge = til selvdokumenterende udtryk og fejlretning:
Tilsat sukker for at forenkle fejlfinding/logning af beskeder.
n = 42
print(f'Hej verden {n=}.')
# vil udskrive "Hej verden n=42." - Rettede fortsæt søgeordet i finally-blokken (det virkede ikke før).
Andre:
- Du kan eksplicit angive stien til bytecode-cachen i stedet for standard __pycache__.
- Debug og Release builds bruger den samme ABI.
Kilde: linux.org.ru