Die wichtigsten neuen Features in Python 3.6

Für kurz vor Weihnachten hat die Python Software Foundation eine neue Version der Programmiersprache Python angekündigt. Mit der Beta-Version kann man bereits jetzt herumprobieren.

Sprachen  –  49 Kommentare

Dieser Artikel bietet eine kompakte Übersicht zu den vermutlich wichtigsten Neuerungen in Version 3.6. Nicht mehr – und nicht weniger. Eine detaillierte Übersicht, was sich verbessert hat oder neu hinzugekommen ist, findet sich auf der Website der Programmiersprache. Bei den folgenden Neuerungen ist jeweils die PEP-Nummer (Python Enhancement Proposal) angegeben, unter der Python-Entwickler im Internet mehr Informationen darüber bekommen.

Formatted String Literals (PEP 498)

Die klassische Art in Python, wie Entwickler Werte von Variablen in eine Zeichenkette einfügen, ist der %-Operator:

>>> ort = 'Stamm'
>>> "Der Apfel fällt nicht weit vom %s" % (ort)
'Der Apfel fällt nicht weit vom Stamm.'

Ab der Version 3 haben sie dafür zunehmend die Methode format verwendet:

>>> "Der Apfel fällt nicht weit vom {0}".format(ort)

Bei vielen Variablen und unterschiedlichen Formatierungen kann das zu einer etwas umständlichen Schreibweise führen. Hier schafft ein neues Präfix für Zeichenketten Abhilfe:

>>> f"Der Apfel fällt nicht weit vom {ort}"
'Der Apfel fällt nicht weit vom Stamm.'

Vor die Zeichenkette schreibt man einfach ein "f" und an die Stelle, an der der Wert der Variablen erscheinen soll, den Variablennamen in geschweiften Klammern. Die unterschiedlichen Formatierungen, die Entwickler von der Methode format kennen, können sie hier ebenfalls verwenden, beispielsweise die Ausgabe ganzer Zahlen in hexadezimaler Schreibweise:

>>> wert = 1234
>>> f'Der Wert als hex{wert:#6x}'
'Der Wert als hex 0x4d2'

Die Formatierungsanweisungen kommen wie gewohnt nach einem Doppelpunkt.

Underscores in Numeric Literals (PEP 515)

Dass man Zahlen mit Unterstrichen strukturieren und damit besser lesbar machen kann, klingt zuerst etwas seltsam. Wer sich ein paar Anwendungsmöglichkeiten ansieht, erkennt jedoch einige Vorteile:

>>> einnahmen = 10_000_000.00
>>> gewinn = einnahmen - 9_000_000.00

Bei großen Zahlen können Entwickler den Unterstrich als Trenner für Tausender und Millionen verwenden und so das Ganze übersichtlicher gestalten:

>>> gewinn
1000000.0

Bei der Ausgabe verschwindet der Unterstrich wieder. Zahlen können beliebig viele Unterstriche haben. Nicht erlaubt ist, dass ein Unterstrich auf einen anderen folgt oder am Anfang und am Ende einer Zahl steht. Sinnvoll ist das Verwenden von Unterstrichen ebenfalls bei langen binären oder hexadezimalen Zahlen:

>>> address = 0xCAFE_F00D
>>> flags = 0b_0011_1111_0100_1110

Hier lassen sich Zahlen in die gewohnte vierstellige Darstellungsweise gruppieren.

Syntax for Variable Annotations (PEP 526)

Bereits in Version 3.5 von Python gibt es bei Funktionen die Möglichkeit, zusätzlich anzugeben (engl. annotation), von welchem Typ deren Rückgabewert ist:

>>> def my_func() -> str :
... return "Hallo"

Ab Python 3.6 ist das genauso bei Variablen möglich:

>>> name : str = "Hallo"

Nach einem Doppelpunkt geben Entwickler an, von welchem Typ die Variable sein soll. Diese Annotations oder Type Hints können sie entsprechend zu komplexeren Datentypen oder Variablen in Klassen hinzufügen:

>>> from typing import List, Dict
>>> my_list: List[int] = []
>>> class Obst:
... inhalt: Dict[str, str] = {}

Derzeit interessiert sich der Python-Interpreter wenig für diese Annotations. Er speichert sie lediglich in einem speziellen Attribut mit dem Namen __annotations__, das Klassen oder Module bekommen. Da Python keine Programmiersprache mit strikter Variablendeklaration – wie C oder Java – ist und in naher Zukunft bestimmt nicht werden will, sind diese zusätzlichen Informationen für weitere Werkzeuge oder Bibliotheken gedacht. Diese wissen über die __annotations__- Attribute mehr über das, was Programmierer vorhaben und können sie dadurch besser unterstützen.

Beispiele hierfür sind Pakete wie mypy oder pytype zur Typprüfung beziehungsweise Entwicklungsumgebungen wie PyCharm.