Python 3.6

Python 3.6 beta 1 wurde am 12. September 2016 veröffentlicht, eine Zusammenfassung der neuen Funktionen finden Sie hier:

Neue Syntax-Funktionen

Status

PEP 498

Literale String-Formatierung

Vollständig

PEP 515

Unterstriche in numerischen Literalen

Vollständig

PEP 525

Asynchrone Generatoren

PEP 526

Syntax für Variablen-Annotationen (vorläufig)

Vollständig

PEP 530

Asynchrone Comprehensions

Neue eingebaute Funktionen

PEP 468

Beibehaltung der Reihenfolge von kwargs in einer Funktion

PEP 487

Einfachere Anpassung der Klassenerstellung

Teilweise [1]

PEP 520

Beibehaltung der Definitionsreihenfolge von Klassenattributen

Änderungen an der Standardbibliothek

PEP 495

Eindeutige Bestimmung der lokalen Zeit

PEP 506

Hinzufügen eines Secrets-Moduls zur Standardbibliothek

PEP 519

Hinzufügen eines Dateisystem-Pfadprotokolls

CPython-Interna

PEP 509

Hinzufügen einer privaten Version zu dict

Wird nicht umgesetzt

PEP 523

Hinzufügen einer Frame-Evaluierungs-API zu CPython

Linux/Windows-Änderungen

PEP 524

os.urandom() unter Linux (während des Systemstarts) blockierend machen

PEP 528

Ändern der Windows-Konsolenkodierung auf UTF-8

PEP 529

Ändern der Windows-Dateisystemkodierung auf UTF-8

Weitere Sprachänderungen:

Eine global- oder nonlocal-Anweisung muss nun textuell vor der ersten Verwendung des betroffenen Namens im selben Geltungsbereich erscheinen. Zuvor war dies eine SyntaxWarning.

Es ist nun möglich, eine spezielle Methode auf None zu setzen, um anzuzeigen, dass die entsprechende Operation nicht verfügbar ist. Setzt eine Klasse beispielsweise __iter__() auf None, ist die Klasse nicht iterierbar.

Lange Folgen wiederholter Traceback-Zeilen werden nun als [Previous line repeated {count} more times] abgekürzt

Der Import löst nun die neue Ausnahme ModuleNotFoundError aus, wenn ein Modul nicht gefunden werden kann. Code, der derzeit auf ImportError (in try-except) prüft, funktioniert weiterhin.

Klassenmethoden, die auf das argumentlose super() angewiesen sind, funktionieren nun korrekt, wenn sie während der Klassenerstellung aus Metaklassen-Methoden aufgerufen werden.

Änderungen an eingebauten Modulen:

array

Erschöpfte Iteratoren von array.array bleiben nun erschöpft, selbst wenn das iterierte Array erweitert wird.

binascii

Die Funktion b2a_base64() akzeptiert nun ein optionales newline-Schlüsselwortargument, um zu steuern, ob das Zeilenumbruchzeichen an den Rückgabewert angehängt wird

Vollständig

cmath

Die neue Konstante cmath.tau (τ) wurde hinzugefügt

Neue Konstanten: cmath.inf und cmath.nan, passend zu math.inf und math.nan, sowie cmath.infj und cmath.nanj, passend zum von complex repr verwendeten Format

collections

Die neue abstrakte Basisklasse Collection wurde hinzugefügt, um iterierbare Container-Klassen mit definierter Größe darzustellen

Die neue abstrakte Basisklasse Reversible repräsentiert iterierbare Klassen, die zusätzlich die Methode __reversed__() bereitstellen.

Die neue abstrakte Basisklasse AsyncGenerator repräsentiert asynchrone Generatoren.

Die Funktion namedtuple() akzeptiert nun ein optionales Schlüsselwortargument module, das, sofern angegeben, für das Attribut __module__ der zurückgegebenen Named-Tuple-Klasse verwendet wird.

Die Argumente verbose und rename von namedtuple() sind nun nur noch als Schlüsselwortargumente zulässig.

Rekursive collections.deque-Instanzen können nun gepickelt werden.

hashlib

Die BLAKE2-Hashfunktionen wurden dem Modul hinzugefügt. blake2b() und blake2s() sind immer verfügbar und unterstützen den vollständigen Funktionsumfang von BLAKE2.

Die SHA-3-Hashfunktionen sha3_224(), sha3_256(), sha3_384(), sha3_512() sowie die SHAKE-Hashfunktionen shake_128() und shake_256() wurden hinzugefügt.

Die passwortbasierte Schlüsselableitungsfunktion scrypt() ist nun mit OpenSSL 1.1.0 und neuer verfügbar.

json

json.load() und json.loads() unterstützen nun binäre Eingaben. Kodiertes JSON sollte entweder als UTF-8, UTF-16 oder UTF-32 dargestellt werden.

math

Die neue Konstante math.tau (τ) wurde hinzugefügt

Vollständig

os

Eine neue Methode close() ermöglicht das explizite Schließen eines scandir()-Iterators. Der scandir()-Iterator unterstützt nun das Kontextmanager-Protokoll.

Unter Linux blockiert os.urandom() nun, bis der urandom-Entropie-Pool des Systems initialisiert ist, um die Sicherheit zu erhöhen.

Der Linux-Systemaufruf getrandom() (zum Abrufen zufälliger Bytes) wird nun als neue Funktion os.getrandom() bereitgestellt.

re

Unterstützung für Modifikator-Bereiche in regulären Ausdrücken hinzugefügt. Beispiele: ‚(?i:p)ython‘ passt auf ‚python‘ und ‚Python‘, aber nicht auf ‚PYTHON‘; ‚(?i)g(?-i:v)r‘ passt auf ‚GvR‘ und ‚gvr‘, aber nicht auf ‚GVR‘.

Auf Match-Objekt-Gruppen kann nun über __getitem__ zugegriffen werden, was group() entspricht. So ist mo[‚name‘] nun gleichbedeutend mit mo.group(‚name‘).

Match-Objekte unterstützen nun indexartige Objekte als Gruppenindizes.

socket

Die Funktion ioctl() unterstützt nun den Steuercode SIO_LOOPBACK_FAST_PATH.

Die getsockopt()-Konstanten SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC und SO_PASSSEC werden nun unterstützt.

setsockopt() unterstützt nun die Form setsockopt(level, optname, None, optlen: int).

Das socket-Modul unterstützt nun die Adressfamilie AF_ALG zur Anbindung an die Krypto-API des Linux-Kernels. ALG_, SOL_ALG und sendmsg_afalg() wurden hinzugefügt.

Die neuen Linux-Konstanten TCP_USER_TIMEOUT und TCP_CONGESTION wurden hinzugefügt.

ssl

ssl unterstützt OpenSSL 1.1.0. Die minimal empfohlene Version ist 1.0.2.

3DES wurde aus den Standard-Cipher-Suites entfernt, und ChaCha20-Poly1305-Cipher-Suites wurden hinzugefügt.

SSLContext hat eine bessere Standardkonfiguration für Optionen und Cipher.

Eine SSL-Sitzung kann mit der neuen Klasse SSLSession von einer clientseitigen Verbindung zu einer anderen kopiert werden. Die Wiederaufnahme von TLS-Sitzungen kann den initialen Handshake beschleunigen, die Latenz verringern und die Leistung verbessern.

Die neue Methode get_ciphers() kann verwendet werden, um eine Liste der aktivierten Cipher in der Reihenfolge ihrer Priorität abzurufen.

Alle Konstanten und Flags wurden in IntEnum und IntFlags umgewandelt.

Server- und clientseitig spezifische TLS-Protokolle für SSLContext wurden hinzugefügt.

SSLContext.post_handshake_auth wurde hinzugefügt, um sie zu aktivieren, sowie ssl.SSLSocket.verify_client_post_handshake(), um die TLS-1.3-Post-Handshake-Authentifizierung einzuleiten.

struct

unterstützt nun IEEE-754-Gleitkommazahlen mit halber Genauigkeit über den Format-Spezifizierer ‚e‘.

sys

Die neue Funktion getfilesystemencodeerrors() gibt den Namen des Fehlermodus zurück, der zur Umwandlung zwischen Unicode-Dateinamen und Byte-Dateinamen verwendet wird.

zlib

Die Funktionen compress() und decompress() akzeptieren nun Schlüsselwortargumente

Hinweise