De mest interessante nyvinningene:
- Oppdragsuttrykk:
Den nye :=-operatoren lar deg tilordne verdier til variabler i uttrykk. For eksempel:
hvis (n := len(a)) > 10:
print(f"Listen er for lang ({n} elementer, forventet <= 10)") - Kun posisjonsargumenter:
Du kan nå spesifisere hvilke funksjonsparametere som kan sendes gjennom navngitt argumentsyntaks og hvilke som 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) # feil, `b` kan ikke være et navngitt argument
f(10, 20, 30, 40, 50, f=60) # feil, `e` må være et navngitt argumentDenne endringen gir utviklere en måte å beskytte brukere av deres API-er mot endringer i funksjonsargumentnavn.
- Støtte f-strenger = for selvdokumenterende uttrykk og feilsøking:
Tilsatt sukker for å forenkle feilsøking/logging av meldinger.
n = 42
print(f'Hei verden {n=}.')
# vil skrive ut "Hello world n=42." - Rettet fortsett-nøkkelordet i finally-blokken (det fungerte ikke før).
andre:
- Du kan eksplisitt spesifisere banen til bytekodebufferen i stedet for standard __pycache__.
- Debug og Release builds bruker samme ABI.
Kilde: linux.org.ru