De meest interessante vernieuwingen:
- Toewijzingsexpressie:
De nieuwe operator := stelt je in staat om waarden aan variabelen toe te wijzen binnen expressies. Bijvoorbeeld:
if (n := len(a)) > 10:
print(f"Lijst is te lang ({n} elementen, verwacht <= 10)") - Positiegebonden argumenten:
Nu kun je aangeven welke functieparameters via de syntaxis van genummerde argumenten kunnen worden doorgegeven en welke niet. Voorbeeld:
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) # fout, `b` kan geen naamparameter zijn
f(10, 20, 30, 40, 50, f=60) # fout, `e` moet een naamparameter zijnDeze wijziging biedt ontwikkelaars een manier om gebruikers van hun API's te beschermen tegen wijzigingen in de namen van functieargumenten.
- Ondersteuning voor f-strings = voor zelfdocumenterende expressies en debugging:
Toegevoegd suiker voor het vereenvoudigen van debug-/logberichten.
n = 42
print(f’Hello world {n=}.’)
# напечатает "Hello world n=42." - Het sleutelwoord continue in het finally-blok is gecorrigeerd (vroeger werkte het niet).
Overig:
- Je kunt expliciet een pad naar de bytecode-cache opgeven in plaats van de standaard __pycache__.
- Debug en Release builds gebruiken dezelfde ABI.
Bron: linux.org.ru
