Python 3.5

Nachfolgend findet sich eine Liste der finalisierten/akzeptierten PEPs für Python 3.5, gruppiert nach ihren Auswirkungen auf MicroPython.

Erweiterungen der Syntax

Status

PEP 448

Zusätzliche Verallgemeinerungen beim Entpacken

Teilweise

PEP 465

Ein neuer Operator für die Matrixmultiplikation

Vollständig

PEP 492

Coroutinen mit async- und await-Syntax

Vollständig

Erweiterungen und Änderungen an der Laufzeit

PEP 461

%-Formatierung für Binärstrings

Vollständig

PEP 475

Erneutes Ausführen von Systemaufrufen, die mit EINTR fehlschlagen

Vollständig

PEP 479

Änderung der StopIteration-Behandlung innerhalb von Generatoren

Vollständig

Änderungen an der Standardbibliothek

PEP 471

os.scandir()

PEP 485

math.isclose(), eine Funktion zum Testen auf näherungsweise Gleichheit

Vollständig

Verschiedene Änderungen

PEP 441

Verbesserte Unterstützung für Python-Zip-Anwendungen

PEP 486

Den Python Launcher für virtuelle Umgebungen sensibilisieren

Nicht relevant

PEP 484

Type Hints (nur beratend)

Vollständig [1]

PEP 488

Beseitigung von PYO-Dateien

Nicht relevant

PEP 489

Neugestaltung des Ladens von Erweiterungsmodulen

Weitere Sprachänderungen:

Die Fehlerbehandlungsroutinen namereplace wurden hinzugefügt. Die Fehlerbehandlungsroutinen backslashreplace funktionieren nun auch beim Dekodieren und Übersetzen.

Property-Docstrings sind nun beschreibbar. Dies ist besonders nützlich für Docstrings von collections.namedtuple()

Zirkuläre Importe mit relativen Importen werden nun unterstützt.

Neue Module:

Änderungen an eingebauten Modulen:

collections

Die Klasse OrderedDict ist nun in C implementiert, was sie 4- bis 100-mal schneller macht.

Die Views OrderedDict.items() , OrderedDict.keys() , OrderedDict.values() unterstützen nun die Iteration mit reversed().

The deque class now defines index(), insert(), and copy(), and supports the + and * operators.

Von namedtuple() erzeugte Docstrings können nun aktualisiert werden.

Die Klasse UserString implementiert nun die Methoden __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() und maketrans(), um den entsprechenden Methoden von str zu entsprechen.

heapq

Der Elementvergleich in merge() kann nun durch Übergabe einer Schlüsselfunktion in einem neuen optionalen Schlüsselwortargument key angepasst werden, und ein neues optionales Schlüsselwortargument reverse kann verwendet werden, um den Elementvergleich umzukehren

io

Eine neue Methode BufferedIOBase.readinto1(), die höchstens einen Aufruf der Methoden RawIOBase.read() oder RawIOBase.readinto() des zugrunde liegenden Raw-Streams verwendet

json

Der JSON-Decoder löst nun JSONDecodeError statt ValueError aus, um bessere Kontextinformationen über den Fehler bereitzustellen.

math

Zwei neue Konstanten wurden dem math-Modul hinzugefügt: inf und nan.

Vollständig

Eine neue Funktion isclose() bietet eine Möglichkeit, auf näherungsweise Gleichheit zu testen.

Eine neue Funktion gcd() wurde hinzugefügt. Die Funktion fractions.gcd() ist nun veraltet.

os

Die neue Funktion scandir(), die einen Iterator über DirEntry-Objekte zurückgibt, wurde hinzugefügt.

Die Funktion urandom() verwendet nun den Syscall getrandom() unter Linux 3.17 oder neuer und getentropy() unter OpenBSD 5.6 und neuer, wodurch die Notwendigkeit der Verwendung von /dev/urandom entfällt und Fehler durch potenzielle Erschöpfung der Dateideskriptoren vermieden werden.

Neue Funktionen get_blocking() und set_blocking() ermöglichen das Abfragen und Setzen des Blockierungsmodus eines Dateideskriptors (O_NONBLOCK.)

Es gibt eine neue Funktion os.path.commonpath(), die den längsten gemeinsamen Teilpfad aller übergebenen Pfadnamen zurückgibt

re

Referenzen und bedingte Referenzen auf Gruppen mit fester Länge sind nun in Lookbehind-Assertions erlaubt

Die Anzahl der erfassenden Gruppen in regulären Ausdrücken ist nicht mehr auf 100 begrenzt.

Die Funktionen sub() und subn() ersetzen nicht übereinstimmende Gruppen nun durch leere Strings, anstatt eine Ausnahme auszulösen.

Die re.error-Ausnahmen besitzen neue Attribute, msg, pattern, pos, lineno und colno, die bessere Kontextinformationen über den Fehler liefern

socket

Funktionen mit Timeouts verwenden nun eine monotone Uhr anstelle einer Systemuhr.

Eine neue Methode socket.sendfile() ermöglicht das Senden einer Datei über einen Socket mithilfe der leistungsstarken Funktion os.sendfile() unter UNIX, wodurch Uploads 2- bis 3-mal schneller sind als bei Verwendung des einfachen socket.send()

Die Methode socket.sendall() setzt das Socket-Timeout nicht mehr bei jedem Empfangen oder Senden von Bytes zurück. Das Socket-Timeout ist nun die maximale Gesamtdauer zum Senden aller Daten.

Das backlog-Argument der Methode socket.listen() ist nun optional. Standardmäßig wird es auf SOMAXCONN oder auf 128 gesetzt, je nachdem, welcher Wert kleiner ist.

Vollständig

ssl

Unterstützung für Memory BIO

Unterstützung für Application-Layer Protocol Negotiation

Es gibt eine neue Methode SSLSocket.version(), um die tatsächlich verwendete Protokollversion abzufragen.

Die Klasse SSLSocket implementiert nun eine Methode SSLSocket.sendfile().

Die Methode SSLSocket.send() löst nun auf einem nicht blockierenden Socket entweder die Ausnahme ssl.SSLWantReadError oder ssl.SSLWantWriteError aus, wenn die Operation blockieren würde. Zuvor gab sie 0 zurück.

Die Funktion cert_time_to_seconds() interpretiert die Eingabezeit nun gemäß RFC 5280 als UTC und nicht als lokale Zeit. Außerdem ist der Rückgabewert nun immer ein int.

Neue Methoden SSLObject.shared_ciphers() und SSLSocket.shared_ciphers() geben die Liste der vom Client während des Handshakes gesendeten Cipher zurück.

Die Methoden SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() und SSLSocket.write() der Klasse SSLSocket setzen das Socket-Timeout nicht mehr bei jedem Empfangen oder Senden von Bytes zurück.

Die Funktion match_hostname() unterstützt nun das Abgleichen von IP-Adressen.

sys

Eine neue Funktion set_coroutine_wrapper() ermöglicht das Setzen eines globalen Hooks, der immer dann aufgerufen wird, wenn ein Coroutine-Objekt von einer async-def-Funktion erstellt wird. Ein entsprechendes get_coroutine_wrapper() kann verwendet werden, um einen aktuell gesetzten Wrapper zu erhalten.

Eine neue Funktion is_finalizing() kann verwendet werden, um zu prüfen, ob der Python-Interpreter heruntergefahren wird.

time

Die Funktion monotonic() ist nun immer verfügbar

Hinweise