Najzanimljivije inovacije:
- Izraz zadatka:
Novi operator := vam omogućava da dodijelite vrijednosti varijablama unutar izraza. Na primjer:
ako (n := len(a)) > 10:
print(f"Lista je predugačka ({n} elemenata, očekivano <= 10)") - Argumenti samo za poziciju:
Sada možete odrediti koji parametri funkcije mogu biti proslijeđeni kroz sintaksu imenovanih argumenata, a koji ne. primjer:
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 promjena daje programerima način da zaštite korisnike svojih API-ja od promjena u nazivima argumenata funkcija.
- Podržava f-strings = za samodokumentiranje izraza i otklanjanje grešaka:
Dodano šećer za pojednostavljenje otklanjanja grešaka/zapisivanja poruka.
n = 42
print(f'Zdravo svijete {n=}.')
# će ispisati "Hello world n=42." - Ispravljena je ključna riječ nastavljanja u finally bloku (prije nije funkcionirala).
Ostalo:
- Možete eksplicitno navesti putanju do keša bajtkoda umjesto zadanog __pycache__.
- Debug i Release verzije koriste isti ABI.
izvor: linux.org.ru