Najzanimljivije novine:
- Izraz dodeljivanja:
Novi operator := omogućava dodeljivanje vrednosti promenljivama unutar izraza. Na primer:
if (n := len(a)) > 10:
print(f"Lista je predugačka ({n} elemenata, očekivano <= 10)") - Argumenti samo za poziciju:
Sada se može odrediti koji parametri funkcija mogu biti prebačeni kroz sintaksu imenovanih argumenata, a koji ne. Primer:
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) # greška, `b` ne može biti imenovani argument
f(10, 20, 30, 40, 50, f=60) # greška, `e` mora biti imenovani argumentOva promena daje programerima način da zaštite korisnike svojih API-ja od promena u imenima argumenata funkcija.
- Podrška za f-stringove = za samodokumentujuće izraze i debagovanje:
Dodata je sintaksa za olakšavanje debagovanja/logovanja poruka.
n = 42
print(f’Zdravo svete {n=}.’)
# напечатает "Hello world n=42." - Ispravljeno ključne reči continue u finally bloku (ranije nije radilo).
Drugo:
- Može se eksplicitno navesti put do keša bajtkoda umesto podrazumevanog __pycache__.
- Debug i Release gradnje koriste isti ABI.
Izvor: linux.org.ru
