De mest intressanta innovationerna:
- Tilldelningsuttryck:
Den nya operatorn := låter dig tilldela värden till variabler i uttryck. Till exempel:
om (n := len(a)) > 10:
print(f"Listan är för lång ({n} element, förväntat <= 10)") - Enbart positionsargument:
Du kan nu specificera vilka funktionsparametrar som kan passeras genom namngiven argumentsyntax och vilka som inte kan. Exempel:
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) # fel, "b" kan inte vara ett namngivet argument
f(10, 20, 30, 40, 50, f=60) # fel, "e" måste vara ett namngivet argumentDenna ändring ger utvecklare ett sätt att skydda användare av sina API:er från ändringar i funktionsargumentnamn.
- Stöd f-strängar = för självdokumenterande uttryck och felsökning:
Tillsatt socker för att förenkla felsökning/loggning av meddelanden.
n = 42
print(f'Hej världen {n=}.')
# kommer att skriva ut "Hej värld n=42." - Fixade nyckelordet fortsätt i finally-blocket (det fungerade inte tidigare).
annat:
- Du kan uttryckligen ange sökvägen till bytecode-cachen istället för standard __pycache__.
- Debug och Release builds använder samma ABI.
Källa: linux.org.ru