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