Python 3.6

Python 3.6 beta 1 släpptes den 12 september 2016, och en sammanfattning av de nya funktionerna finns här:

Nya syntaxfunktioner

Status

PEP 498

Literal stränginterpolering

Klar

PEP 515

Understreck i numeriska literaler

Klar

PEP 525

Asynkrona generatorer

PEP 526

Syntax för variabelannoteringar (provisorisk)

Klar

PEP 530

Asynkrona comprehensions

Nya inbyggda funktioner

PEP 468

Bevarande av ordningen för kwargs i en funktion

PEP 487

Enklare anpassning av klasskapande

Delvis [1]

PEP 520

Bevarande av definitionsordningen för klassattribut

Ändringar i standardbiblioteket

PEP 495

Disambiguering av lokal tid

PEP 506

Tillägg av en secrets-modul till standardbiblioteket

PEP 519

Tillägg av ett protokoll för filsystemssökvägar

CPython-interna delar

PEP 509

Lägg till en privat version i dict

Görs inte

PEP 523

Tillägg av ett API för utvärdering av stackramar i CPython

Ändringar för Linux/Windows

PEP 524

Gör os.urandom() blockerande på Linux (under systemstart)

PEP 528

Ändra teckenkodningen i Windows-konsolen till UTF-8

PEP 529

Ändra Windows filsystemskodning till UTF-8

Övriga språkändringar:

En global- eller nonlocal-sats måste nu textuellt förekomma före den första användningen av det berörda namnet i samma omfång. Tidigare gav detta en SyntaxWarning.

Det är nu möjligt att sätta en specialmetod till None för att indikera att motsvarande operation inte är tillgänglig. Om en klass exempelvis sätter __iter__() till None är klassen inte itererbar.

Långa sekvenser av upprepade traceback-rader förkortas nu som [Previous line repeated {count} more times]

Import ger nu det nya undantaget ModuleNotFoundError när en modul inte kan hittas. Kod som för närvarande kontrollerar ImportError (i try-except) fungerar fortfarande.

Klassmetoder som förlitar sig på super() utan argument fungerar nu korrekt när de anropas från metaklassmetoder under klasskapande.

Ändringar i inbyggda moduler:

array

Uttömda iteratorer för array.array förblir nu uttömda även om den itererade arrayen utökas.

binascii

Funktionen b2a_base64() accepterar nu ett valfritt newline-nyckelordsargument som styr om radbrytningstecknet läggs till i returvärdet

Klar

cmath

Den nya konstanten cmath.tau (τ) har lagts till

Nya konstanter: cmath.inf och cmath.nan för att matcha math.inf och math.nan , samt även cmath.infj och cmath.nanj för att matcha det format som används av komplex repr

collections

Den nya abstrakta basklassen Collection har lagts till för att representera storlekssatta itererbara behållarklasser

Den nya abstrakta basklassen Reversible representerar itererbara klasser som även tillhandahåller metoden __reversed__().

Den nya abstrakta basklassen AsyncGenerator representerar asynkrona generatorer.

Funktionen namedtuple() accepterar nu ett valfritt nyckelordsargument module, som, när det anges, används för attributet __module__ hos den returnerade namngivna tupelklassen.

Argumenten verbose och rename för namedtuple() är nu enbart nyckelordsbaserade.

Rekursiva collections.deque-instanser kan nu picklas.

hashlib

Hashfunktionerna BLAKE2 lades till i modulen. blake2b() och blake2s() är alltid tillgängliga och stöder hela funktionsuppsättningen i BLAKE2.

Hashfunktionerna SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512(), och SHAKE-hashfunktionerna shake_128() och shake_256() lades till.

Den lösenordsbaserade nyckelhärledningsfunktionen scrypt() är nu tillgänglig med OpenSSL 1.1.0 och nyare.

json

json.load() och json.loads() stöder nu binär indata. Kodad JSON bör representeras med antingen UTF-8, UTF-16 eller UTF-32.

math

Den nya konstanten math.tau (τ) har lagts till

Klar

os

En ny metod close() gör det möjligt att uttryckligen stänga en scandir()-iterator. Iteratorn scandir() stöder nu protokollet för kontexthanterare.

På Linux blockerar os.urandom() nu tills systemets urandom-entropipool har initierats för att öka säkerheten.

Linux-systemanropet getrandom() (hämta slumpmässiga byte) exponeras nu som den nya funktionen os.getrandom().

re

Lade till stöd för modifierarspann i reguljära uttryck. Exempel: ’(?i:p)ython’ matchar ’python’ och ’Python’, men inte ’PYTHON’; ’(?i)g(?-i:v)r’ matchar ’GvR’ och ’gvr’, men inte ’GVR’.

Grupper i match-objekt kan nu nås via __getitem__, vilket motsvarar group(). Så mo[’name’] motsvarar nu mo.group(’name’).

Match-objekt stöder nu index-liknande objekt som gruppindex.

socket

Funktionen ioctl() stöder nu kontrollkoden SIO_LOOPBACK_FAST_PATH.

Konstanterna SO_DOMAIN , SO_PROTOCOL, SO_PEERSEC och SO_PASSSEC för getsockopt() stöds nu.

setsockopt() stöder nu formen setsockopt(level, optname, None, optlen: int).

Socket-modulen stöder nu adressfamiljen AF_ALG för att samverka med Linuxkärnans krypto-API. ALG_, SOL_ALG och sendmsg_afalg() lades till.

De nya Linux-konstanterna TCP_USER_TIMEOUT och TCP_CONGESTION lades till.

ssl

ssl stöder OpenSSL 1.1.0. Den lägsta rekommenderade versionen är 1.0.2.

3DES har tagits bort från standarduppsättningarna av chiffer och chifferuppsättningarna ChaCha20 Poly1305 har lagts till.

SSLContext har bättre standardkonfiguration för alternativ och chiffer.

En SSL-session kan kopieras från en anslutning på klientsidan till en annan med den nya klassen SSLSession. Återupptagande av TLS-sessioner kan påskynda den inledande handskakningen, minska latensen och förbättra prestandan.

Den nya metoden get_ciphers() kan användas för att hämta en lista över aktiverade chiffer i prioritetsordning.

Alla konstanter och flaggor har konverterats till IntEnum och IntFlags.

Specifika TLS-protokoll för server- och klientsidan för SSLContext lades till.

Lade till SSLContext.post_handshake_auth för att aktivera och ssl.SSLSocket.verify_client_post_handshake() för att initiera autentisering efter handskakning i TLS 1.3.

struct

stöder nu IEEE 754-flyttal med halv precision via formatspecificeraren ’e’.

sys

Den nya funktionen getfilesystemencodeerrors() returnerar namnet på det felläge som används vid konvertering mellan Unicode-filnamn och byte-filnamn.

zlib

Funktionerna compress() och decompress() accepterar nu nyckelordsargument

Anteckningar