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 | |
Literal stränginterpolering | Klar | |
Understreck i numeriska literaler | Klar | |
Asynkrona generatorer | ||
Syntax för variabelannoteringar (provisorisk) | Klar | |
Asynkrona comprehensions | ||
Nya inbyggda funktioner | ||
Bevarande av ordningen för kwargs i en funktion | ||
Enklare anpassning av klasskapande | Delvis [1] | |
Bevarande av definitionsordningen för klassattribut | ||
Ändringar i standardbiblioteket | ||
Disambiguering av lokal tid | ||
Tillägg av en secrets-modul till standardbiblioteket | ||
Tillägg av ett protokoll för filsystemssökvägar | ||
CPython-interna delar | ||
Lägg till en privat version i dict | Görs inte | |
Tillägg av ett API för utvärdering av stackramar i CPython | ||
Ändringar för Linux/Windows | ||
Gör | ||
Ändra teckenkodningen i Windows-konsolen till UTF-8 | ||
Ä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:
Uttömda iteratorer för array.array förblir nu uttömda även om den itererade arrayen utökas. | |
Funktionen b2a_base64() accepterar nu ett valfritt newline-nyckelordsargument som styr om radbrytningstecknet läggs till i returvärdet | Klar |
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 | |
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. | |
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.load() och json.loads() stöder nu binär indata. Kodad JSON bör representeras med antingen UTF-8, UTF-16 eller UTF-32. | |
Den nya konstanten math.tau (τ) har lagts till | Klar |
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(). | |
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. | |
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 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. | |
stöder nu IEEE 754-flyttal med halv precision via formatspecificeraren ’e’. | |
Den nya funktionen getfilesystemencodeerrors() returnerar namnet på det felläge som används vid konvertering mellan Unicode-filnamn och byte-filnamn. | |
Funktionerna compress() och decompress() accepterar nu nyckelordsargument | |
Anteckningar