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 | |
Letterlijke tekenreeksopmaak | Voltooid | |
Underscores in numerieke literals | Voltooid | |
Asynchrone generators | ||
Syntax voor variabele-annotaties (voorlopig) | Voltooid | |
Asynchrone comprehensions | ||
Nieuwe ingebouwde functies | ||
Behoud van de volgorde van kwargs in een functie | ||
Eenvoudigere aanpassing van klasse-aanmaak | Gedeeltelijk [1] | |
Behoud van de definitievolgorde van klasse-attributen | ||
Wijzigingen in de standaardbibliotheek | ||
Lokale-tijd-disambiguatie | ||
Een secrets-module toevoegen aan de standaardbibliotheek | ||
Een bestandssysteempad-protocol toevoegen | ||
CPython-interne werking | ||
Een privéversie toevoegen aan dict | Wordt niet gedaan | |
Een frame-evaluatie-API toevoegen aan CPython | ||
Wijzigingen voor Linux/Windows | ||
| ||
De Windows-consolecodering wijzigen naar UTF-8 | ||
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:
Uitgeputte iterators van array.array blijven nu uitgeput, zelfs als de geïtereerde array wordt uitgebreid. | |
De functie b2a_base64() accepteert nu een optioneel newline-keywordargument om te bepalen of het newline-teken aan de retourwaarde wordt toegevoegd | Voltooid |
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 | |
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. | |
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.load() en json.loads() ondersteunen nu binaire invoer. Gecodeerde JSON moet worden weergegeven met UTF-8, UTF-16 of UTF-32. | |
De nieuwe constante math.tau (τ) is toegevoegd | Voltooid |
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(). | |
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. | |
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 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. | |
ondersteunt nu IEEE 754 half-precision floats via de opmaakspecificatie ‘e’. | |
De nieuwe functie getfilesystemencodeerrors() retourneert de naam van de foutmodus die wordt gebruikt om te converteren tussen Unicode-bestandsnamen en bytes-bestandsnamen. | |
De functies compress() en decompress() accepteren nu keywordargumenten | |
Opmerkingen