Python 3.6

Python 3.6 beta 1 werd uitgebracht op 12 september 2016, en een samenvatting van de nieuwe functies is hier te vinden:

Nieuwe syntaxfuncties

Status

PEP 498

Letterlijke tekenreeksopmaak

Voltooid

PEP 515

Underscores in numerieke literals

Voltooid

PEP 525

Asynchrone generators

PEP 526

Syntax voor variabele-annotaties (voorlopig)

Voltooid

PEP 530

Asynchrone comprehensions

Nieuwe ingebouwde functies

PEP 468

Behoud van de volgorde van kwargs in een functie

PEP 487

Eenvoudigere aanpassing van klasse-aanmaak

Gedeeltelijk [1]

PEP 520

Behoud van de definitievolgorde van klasse-attributen

Wijzigingen in de standaardbibliotheek

PEP 495

Lokale-tijd-disambiguatie

PEP 506

Een secrets-module toevoegen aan de standaardbibliotheek

PEP 519

Een bestandssysteempad-protocol toevoegen

CPython-interne werking

PEP 509

Een privéversie toevoegen aan dict

Wordt niet gedaan

PEP 523

Een frame-evaluatie-API toevoegen aan CPython

Wijzigingen voor Linux/Windows

PEP 524

os.urandom() blokkerend maken op Linux (tijdens het opstarten van het systeem)

PEP 528

De Windows-consolecodering wijzigen naar UTF-8

PEP 529

De Windows-bestandssysteemcodering wijzigen naar UTF-8

Overige taalwijzigingen:

Een global- of nonlocal-statement moet nu tekstueel vóór het eerste gebruik van de betreffende naam in dezelfde scope verschijnen. Voorheen was dit een SyntaxWarning.

Het is nu mogelijk om een speciale methode op None in te stellen om aan te geven dat de bijbehorende bewerking niet beschikbaar is. Als een klasse bijvoorbeeld __iter__() op None instelt, is de klasse niet itereerbaar.

Lange reeksen herhaalde traceback-regels worden nu afgekort als [Previous line repeated {count} more times]

Import roept nu de nieuwe uitzondering ModuleNotFoundError op wanneer er geen module kan worden gevonden. Code die momenteel op ImportError controleert (in try-except) blijft werken.

Klassemethoden die afhankelijk zijn van een argumentloze super() werken nu correct wanneer ze worden aangeroepen vanuit metaclass-methoden tijdens het aanmaken van een klasse.

Wijzigingen in ingebouwde modules:

array

Uitgeputte iterators van array.array blijven nu uitgeput, zelfs als de geïtereerde array wordt uitgebreid.

binascii

De functie b2a_base64() accepteert nu een optioneel newline-keywordargument om te bepalen of het newline-teken aan de retourwaarde wordt toegevoegd

Voltooid

cmath

De nieuwe constante cmath.tau (τ) is toegevoegd

Nieuwe constanten: cmath.inf en cmath.nan om overeen te komen met math.inf en math.nan, en ook cmath.infj en cmath.nanj om overeen te komen met de opmaak die door complex repr wordt gebruikt

collections

De nieuwe abstracte basisklasse Collection is toegevoegd om iterabele containerklassen met een grootte te vertegenwoordigen

De nieuwe abstracte basisklasse Reversible vertegenwoordigt iterabele klassen die ook de methode __reversed__() bieden.

De nieuwe abstracte basisklasse AsyncGenerator vertegenwoordigt asynchrone generators.

De functie namedtuple() accepteert nu een optioneel keywordargument module, dat, indien opgegeven, wordt gebruikt voor het attribuut __module__ van de geretourneerde named-tuple-klasse.

De argumenten verbose en rename voor namedtuple() zijn nu keyword-only.

Recursieve instanties van collections.deque kunnen nu worden gepickled.

hashlib

BLAKE2-hashfuncties zijn aan de module toegevoegd. blake2b() en blake2s() zijn altijd beschikbaar en ondersteunen de volledige functieset van BLAKE2.

De SHA-3-hashfuncties sha3_224(), sha3_256(), sha3_384(), sha3_512() en de SHAKE-hashfuncties shake_128() en shake_256() zijn toegevoegd.

De op een wachtwoord gebaseerde sleutelafleidingsfunctie scrypt() is nu beschikbaar met OpenSSL 1.1.0 en nieuwer.

json

json.load() en json.loads() ondersteunen nu binaire invoer. Gecodeerde JSON moet worden weergegeven met UTF-8, UTF-16 of UTF-32.

math

De nieuwe constante math.tau (τ) is toegevoegd

Voltooid

os

Met een nieuwe methode close() kan een scandir()-iterator expliciet worden gesloten. De scandir()-iterator ondersteunt nu het context-managerprotocol.

Op Linux blokkeert os.urandom() nu totdat de urandom-entropiepool van het systeem is geïnitialiseerd, om de beveiliging te verhogen.

De Linux-syscall getrandom() (willekeurige bytes ophalen) is nu beschikbaar als de nieuwe functie os.getrandom().

re

Ondersteuning toegevoegd voor modifier-spans in reguliere expressies. Voorbeelden: ‘(?i:p)ython’ komt overeen met ‘python’ en ‘Python’, maar niet met ‘PYTHON’; ‘(?i)g(?-i:v)r’ komt overeen met ‘GvR’ en ‘gvr’, maar niet met ‘GVR’.

Match-objectgroepen kunnen worden benaderd via __getitem__, wat equivalent is aan group(). Dus mo[‘name’] is nu equivalent aan mo.group(‘name’).

Match-objecten ondersteunen nu index-achtige objecten als groepsindices.

socket

De functie ioctl() ondersteunt nu de controlecode SIO_LOOPBACK_FAST_PATH.

De getsockopt()-constanten SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC en SO_PASSSEC worden nu ondersteund.

De setsockopt() ondersteunt nu de vorm setsockopt(level, optname, None, optlen: int).

De socket-module ondersteunt nu de adresfamilie AF_ALG om te koppelen met de crypto-API van de Linux-kernel. ALG_, SOL_ALG en sendmsg_afalg() zijn toegevoegd.

Nieuwe Linux-constanten TCP_USER_TIMEOUT en TCP_CONGESTION zijn toegevoegd.

ssl

ssl ondersteunt OpenSSL 1.1.0. De minimaal aanbevolen versie is 1.0.2.

3DES is verwijderd uit de standaard cipher suites en ChaCha20 Poly1305 cipher suites zijn toegevoegd.

SSLContext heeft een betere standaardconfiguratie voor opties en ciphers.

Een SSL-sessie kan worden gekopieerd van de ene verbinding aan de clientzijde naar de andere met de nieuwe klasse SSLSession. Hervatting van een TLS-sessie kan de initiële handshake versnellen, de latentie verlagen en de prestaties verbeteren.

De nieuwe methode get_ciphers() kan worden gebruikt om een lijst van ingeschakelde ciphers op te halen, geordend op cipher-prioriteit.

Alle constanten en vlaggen zijn omgezet naar IntEnum en IntFlags.

Server- en clientspecifieke TLS-protocollen voor SSLContext zijn toegevoegd.

SSLContext.post_handshake_auth toegevoegd om TLS 1.3-authenticatie na de handshake in te schakelen en ssl.SSLSocket.verify_client_post_handshake() om deze te starten.

struct

ondersteunt nu IEEE 754 half-precision floats via de opmaakspecificatie ‘e’.

sys

De nieuwe functie getfilesystemencodeerrors() retourneert de naam van de foutmodus die wordt gebruikt om te converteren tussen Unicode-bestandsnamen en bytes-bestandsnamen.

zlib

De functies compress() en decompress() accepteren nu keywordargumenten

Opmerkingen