Python 3.5

Nedan följer en lista över slutförda/accepterade PEP:er för Python 3.5 grupperade efter deras inverkan på MicroPython.

Utökningar av syntaxen

Status

PEP 448

Ytterligare generaliseringar av uppackning

Partiell

PEP 465

En ny operator för matrismultiplikation

Komplett

PEP 492

Koroutiner med async- och await-syntax

Komplett

Utökningar och ändringar av körtiden

PEP 461

%-formatering för binära strängar

Komplett

PEP 475

Försök igen med systemanrop som misslyckas med EINTR

Komplett

PEP 479

Ändra hanteringen av StopIteration inuti generatorer

Komplett

Ändringar i standardbiblioteket

PEP 471

os.scandir()

PEP 485

math.isclose(), en funktion för att testa ungefärlig likhet

Komplett

Diverse ändringar

PEP 441

Förbättrat stöd för Python-zip-applikationer

PEP 486

Gör Python Launcher medveten om virtuella miljöer

Inte relevant

PEP 484

Typtips (endast rådgivande)

Komplett [1]

PEP 488

Eliminering av PYO-filer

Inte relevant

PEP 489

Omdesign av inläsning av tilläggsmoduler

Övriga språkändringar:

Lade till felhanterarna namereplace. Felhanterarna backslashreplace fungerar nu med avkodning och översättning.

Docstrings för egenskaper är nu skrivbara. Detta är särskilt användbart för docstrings i collections.namedtuple()

Cirkulära importer som involverar relativa importer stöds nu.

Nya moduler:

Ändringar i inbyggda moduler:

collections

Klassen OrderedDict är nu implementerad i C, vilket gör den 4 till 100 gånger snabbare.

Vyerna OrderedDict.items(), OrderedDict.keys(), OrderedDict.values() stöder nu iteration med reversed().

The deque class now defines index(), insert(), and copy(), and supports the + and * operators.

Docstrings som produceras av namedtuple() kan nu uppdateras.

Klassen UserString implementerar nu metoderna __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() och maketrans() för att matcha motsvarande metoder i str.

heapq

Elementjämförelse i merge() kan nu anpassas genom att skicka en nyckelfunktion i ett nytt valfritt nyckelord key, och ett nytt valfritt nyckelord reverse kan användas för att vända elementjämförelsen

io

En ny metod BufferedIOBase.readinto1() som använder högst ett anrop till den underliggande råströmmens metoder RawIOBase.read() eller RawIOBase.readinto()

json

JSON-avkodaren genererar nu JSONDecodeError i stället för ValueError för att ge bättre kontextinformation om felet.

math

Två nya konstanter har lagts till i math-modulen: inf och nan.

Komplett

En ny funktion isclose() ger ett sätt att testa för ungefärlig likhet.

En ny funktion gcd() har lagts till. Funktionen fractions.gcd() är nu utfasad.

os

Den nya funktionen scandir() som returnerar en iterator av DirEntry-objekt har lagts till.

Funktionen urandom() använder nu systemanropet getrandom() på Linux 3.17 eller nyare, och getentropy() på OpenBSD 5.6 och nyare, vilket eliminerar behovet av att använda /dev/urandom och undviker fel på grund av potentiell utarmning av filbeskrivare.

Nya funktioner get_blocking() och set_blocking() gör det möjligt att hämta och ställa in en filbeskrivares blockeringsläge (O_NONBLOCK.)

Det finns en ny funktion os.path.commonpath() som returnerar den längsta gemensamma underdelen av varje skickat sökvägsnamn

re

Referenser och villkorliga referenser till grupper med fast längd är nu tillåtna i lookbehind-assertioner

Antalet fångande grupper i reguljära uttryck är inte längre begränsat till 100.

Funktionerna sub() och subn() ersätter nu omatchade grupper med tomma strängar i stället för att generera ett undantag.

Undantagen re.error har nya attribut, msg, pattern, pos, lineno och colno, som ger bättre kontextinformation om felet

socket

Funktioner med tidsgränser använder nu en monoton klocka i stället för en systemklocka.

En ny metod socket.sendfile() gör det möjligt att skicka en fil över en socket genom att använda den högpresterande funktionen os.sendfile() på UNIX, vilket resulterar i att uppladdningar blir 2 till 3 gånger snabbare än vid användning av enbart socket.send()

Metoden socket.sendall() återställer inte längre socketens tidsgräns varje gång byte tas emot eller skickas. Socketens tidsgräns är nu den maximala totala varaktigheten för att skicka all data.

Argumentet backlog i metoden socket.listen() är nu valfritt. Som standard sätts det till SOMAXCONN eller till 128, beroende på vilket som är minst.

Komplett

ssl

Stöd för Memory BIO

Stöd för Application-Layer Protocol Negotiation

Det finns en ny metod SSLSocket.version() för att fråga efter den faktiska protokollversion som används.

Klassen SSLSocket implementerar nu en metod SSLSocket.sendfile().

Metoden SSLSocket.send() genererar nu antingen undantaget ssl.SSLWantReadError eller ssl.SSLWantWriteError på en icke-blockerande socket om operationen skulle blockera. Tidigare returnerade den 0.

Funktionen cert_time_to_seconds() tolkar nu indatatiden som UTC och inte som lokal tid, enligt RFC 5280. Dessutom är returvärdet alltid ett int.

Nya metoder SSLObject.shared_ciphers() och SSLSocket.shared_ciphers() returnerar listan över chiffer som skickats av klienten under handskakningen.

Metoderna SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() och SSLSocket.write() i klassen SSLSocket återställer inte längre socketens tidsgräns varje gång byte tas emot eller skickas.

Funktionen match_hostname() stöder nu matchning av IP-adresser.

sys

En ny funktion set_coroutine_wrapper() gör det möjligt att ställa in en global krok som anropas när ett koroutinobjekt skapas av en async def-funktion. En motsvarande get_coroutine_wrapper() kan användas för att hämta en aktuellt inställd wrapper.

En ny funktion is_finalizing() kan användas för att kontrollera om Python-tolken håller på att stängas av.

time

Funktionen monotonic() är nu alltid tillgänglig

Anteckningar