Python 3.5

Hieronder staat een lijst met afgeronde/geaccepteerde PEP’s voor Python 3.5, gegroepeerd naar hun impact op MicroPython.

Uitbreidingen op de syntaxis

Status

PEP 448

Aanvullende generalisaties van unpacking

Gedeeltelijk

PEP 465

Een nieuwe operator voor matrixvermenigvuldiging

Volledig

PEP 492

Coroutines met async- en await-syntaxis

Volledig

Uitbreidingen en wijzigingen aan de runtime

PEP 461

%-formattering voor binaire strings

Volledig

PEP 475

Het opnieuw proberen van systeemaanroepen die falen met EINTR

Volledig

PEP 479

Wijziging van de afhandeling van StopIteration binnen generators

Volledig

Wijzigingen aan de standaardbibliotheek

PEP 471

os.scandir()

PEP 485

math.isclose(), een functie voor het testen van benaderende gelijkheid

Volledig

Diverse wijzigingen

PEP 441

Verbeterde ondersteuning voor Python zip-applicaties

PEP 486

De Python Launcher bewust maken van virtuele omgevingen

Niet relevant

PEP 484

Type hints (alleen adviserend)

Volledig [1]

PEP 488

Eliminatie van PYO-bestanden

Niet relevant

PEP 489

Herontwerp van het laden van extensiemodules

Overige taalwijzigingen:

De namereplace-foutafhandelaars toegevoegd. De backslashreplace-foutafhandelaars werken nu ook met decoderen en vertalen.

Docstrings van properties zijn nu beschrijfbaar. Dit is vooral nuttig voor docstrings van collections.namedtuple()

Circulaire imports met relatieve imports worden nu ondersteund.

Nieuwe modules:

Wijzigingen aan ingebouwde modules:

collections

De OrderedDict-klasse is nu geïmplementeerd in C, waardoor deze 4 tot 100 keer sneller is.

De views OrderedDict.items(), OrderedDict.keys() en OrderedDict.values() ondersteunen nu iteratie met reversed().

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

Docstrings die door namedtuple() worden geproduceerd, kunnen nu worden bijgewerkt.

De UserString-klasse implementeert nu de methoden __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() en maketrans() om overeen te komen met de corresponderende methoden van str.

heapq

Elementvergelijking in merge() kan nu worden aangepast door een key-functie door te geven in een nieuw optioneel key-keyword-argument, en een nieuw optioneel reverse-keyword-argument kan worden gebruikt om de elementvergelijking om te keren

io

Een nieuwe methode BufferedIOBase.readinto1(), die hooguit één aanroep gebruikt naar de methoden RawIOBase.read() of RawIOBase.readinto() van de onderliggende raw stream

json

De JSON-decoder werpt nu JSONDecodeError op in plaats van ValueError om betere contextinformatie over de fout te bieden.

math

Twee nieuwe constanten zijn toegevoegd aan de math-module: inf en nan.

Volledig

Een nieuwe functie isclose() biedt een manier om op benaderende gelijkheid te testen.

Een nieuwe functie gcd() is toegevoegd. De functie fractions.gcd() is nu gedeprecieerd.

os

De nieuwe functie scandir(), die een iterator van DirEntry-objecten teruggeeft, is toegevoegd.

De functie urandom() gebruikt nu de getrandom()-syscall op Linux 3.17 of nieuwer, en getentropy() op OpenBSD 5.6 en nieuwer, waardoor het gebruik van /dev/urandom niet meer nodig is en storingen door mogelijke uitputting van file descriptors worden vermeden.

Nieuwe functies get_blocking() en set_blocking() maken het mogelijk om de blocking-modus van een file descriptor (O_NONBLOCK) op te vragen en in te stellen.

Er is een nieuwe functie os.path.commonpath() die het langste gemeenschappelijke subpad van elk doorgegeven padnaam teruggeeft

re

Referenties en voorwaardelijke referenties naar groepen met een vaste lengte zijn nu toegestaan in lookbehind-asserties

Het aantal capturing groups in reguliere expressies is niet langer beperkt tot 100.

De functies sub() en subn() vervangen niet-overeenkomende groepen nu door lege strings in plaats van een exceptie op te werpen.

De re.error-excepties hebben nieuwe attributen, msg, pattern, pos, lineno en colno, die betere contextinformatie over de fout bieden

socket

Functies met timeouts gebruiken nu een monotone klok in plaats van een systeemklok.

Een nieuwe methode socket.sendfile() maakt het mogelijk om een bestand over een socket te verzenden met behulp van de hoogperformante functie os.sendfile() op UNIX, waardoor uploads 2 tot 3 keer sneller zijn dan bij gebruik van het eenvoudige socket.send()

De methode socket.sendall() reset de socket-timeout niet langer telkens wanneer bytes worden ontvangen of verzonden. De socket-timeout is nu de maximale totale duur om alle gegevens te verzenden.

Het backlog-argument van de methode socket.listen() is nu optioneel. Standaard wordt het ingesteld op SOMAXCONN of op 128, afhankelijk van welke kleiner is.

Volledig

ssl

Ondersteuning voor Memory BIO

Ondersteuning voor Application-Layer Protocol Negotiation

Er is een nieuwe methode SSLSocket.version() om de daadwerkelijk gebruikte protocolversie op te vragen.

De SSLSocket-klasse implementeert nu een methode SSLSocket.sendfile().

De methode SSLSocket.send() werpt nu op een non-blocking socket de exceptie ssl.SSLWantReadError of ssl.SSLWantWriteError op als de bewerking zou blokkeren. Voorheen gaf deze 0 terug.

De functie cert_time_to_seconds() interpreteert de invoertijd nu als UTC en niet als lokale tijd, volgens RFC 5280. Bovendien is de teruggegeven waarde altijd een int.

Nieuwe methoden SSLObject.shared_ciphers() en SSLSocket.shared_ciphers() geven de lijst met ciphers terug die de client tijdens de handshake heeft verzonden.

De methoden SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() en SSLSocket.write() van de SSLSocket-klasse resetten de socket-timeout niet langer telkens wanneer bytes worden ontvangen of verzonden.

De functie match_hostname() ondersteunt nu het matchen van IP-adressen.

sys

Een nieuwe functie set_coroutine_wrapper() maakt het mogelijk om een globale hook in te stellen die wordt aangeroepen telkens wanneer een coroutine-object door een async def-functie wordt aangemaakt. Een bijbehorende get_coroutine_wrapper() kan worden gebruikt om een momenteel ingestelde wrapper op te halen.

Een nieuwe functie is_finalizing() kan worden gebruikt om te controleren of de Python-interpreter wordt afgesloten.

time

De functie monotonic() is nu altijd beschikbaar

Opmerkingen