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 |
|
Literale String-Formatierung |
Vollständig |
|
Unterstriche in numerischen Literalen |
Vollständig |
|
Asynchrone Generatoren |
||
Syntax für Variablen-Annotationen (vorläufig) |
Vollständig |
|
Asynchrone Comprehensions |
||
Neue eingebaute Funktionen |
||
Beibehaltung der Reihenfolge von kwargs in einer Funktion |
||
Einfachere Anpassung der Klassenerstellung |
Teilweise [1] |
|
Beibehaltung der Definitionsreihenfolge von Klassenattributen |
||
Änderungen an der Standardbibliothek |
||
Eindeutige Bestimmung der lokalen Zeit |
||
Hinzufügen eines Secrets-Moduls zur Standardbibliothek |
||
Hinzufügen eines Dateisystem-Pfadprotokolls |
||
CPython-Interna |
||
Hinzufügen einer privaten Version zu dict |
Wird nicht umgesetzt |
|
Hinzufügen einer Frame-Evaluierungs-API zu CPython |
||
Linux/Windows-Änderungen |
||
|
||
Ändern der Windows-Konsolenkodierung auf UTF-8 |
||
Ä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:
Erschöpfte Iteratoren von array.array bleiben nun erschöpft, selbst wenn das iterierte Array erweitert wird. |
|
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 |
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 |
|
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. |
|
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.load() und json.loads() unterstützen nun binäre Eingaben. Kodiertes JSON sollte entweder als UTF-8, UTF-16 oder UTF-32 dargestellt werden. |
|
Die neue Konstante math.tau (τ) wurde hinzugefügt |
Vollständig |
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. |
|
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. |
|
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 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. |
|
unterstützt nun IEEE-754-Gleitkommazahlen mit halber Genauigkeit über den Format-Spezifizierer ‚e‘. |
|
Die neue Funktion getfilesystemencodeerrors() gibt den Namen des Fehlermodus zurück, der zur Umwandlung zwischen Unicode-Dateinamen und Byte-Dateinamen verwendet wird. |
|
Die Funktionen compress() und decompress() akzeptieren nun Schlüsselwortargumente |
|
Hinweise