Python 3.9 erschienen

Mi, 7. Oktober 2020, Ralf Hersel

Die bliebte Programmiersprache Python ist heute in der Version 3.9 erschienen. Python ist eine universelle, üblicherweise interpretierte, höhere Programmiersprache. Sie hat den Anspruch, einen gut lesbaren, knappen Programmierstil zu fördern. So werden beispielsweise Blöcke nicht durch geschweifte Klammern, sondern durch Einrückungen strukturiert.

Python unterstützt mehrere Programmierparadigmen, z. B. die objektorientierte, die aspektorientierte und die funktionale Programmierung. Ferner bietet es eine dynamische Typisierung. Wie viele dynamische Sprachen wird Python oft als Skriptsprache genutzt. Die Sprache weist ein offenes, gemeinschaftsbasiertes Entwicklungsmodell auf, das durch die gemeinnützige Python Software Foundation gestützt wird.

In der Version 3.9 gibt es zahlreiche Neuerungen; die wichtigsten davon sind ein neuer Parser, drei neue Syntax-Elemente und zwei neue Module.

Seit 30 Jahren verwendet Python einen LL-Parser, der von links nach rechts arbeitet, dabei eine Linksableitung durchführt und ein Token vorausschauen kann. Die Arbeitsweise ist zwar performant, bringt aber einige Einschränkungen mit sich. So gibt es in Python Konstrukte, die der alte Parser nur noch mit Tricks abarbeiten kann. Der neue Parser verwendet die Parsing Expression Grammar, ist genauso schnell wie der alte, dabei aber viel flexibler.

Neu in der Syntaxt ist nun ein Union-Operator für Dictionaries, es lassen sich jetzt explizite Typangaben für die integrierten generischen Typen wie list oder dict verwenden und es gibt die neuen Methoden removeprefix und removesuffix um Strings am Anfang oder Ende zu beschneiden. Die Methoden entfernen keine feste Anzahl an Zeichen, sondern vorne beziehungsweise hinten stehende Zeichenketten, wenn diese vorhanden sind. Bei den neuen Modulen handelt es sich um das IANA-Zeitzonendatenbankmodul zoneinfo und eine Implementierung eines topologischen Graphen im Modul graphlib.

Zwei der neuen Syntaxelement möchte ich kurz erläutern. Der Union-Operator gibt ein neues Dictionary zurück, welches den linken Operanden mit dem rechten Operanden zusammenführt. Bei beiden Operanden muss es sich um Dictionaries handeln. Falls ein Schlüssel in beiden Operanden vorkommt, gewinnt der zuletzt gesehene Operand. Hier ein Beispiel:

>>> d = {'spam': 1, 'eggs': 2, 'cheese': 3}
>>> e = {'cheese': 'cheddar', 'aardvark': 'Ethel'}
>>> d | e
{'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'}
>>> e | d
{'aardvark': 'Ethel', 'spam': 1, 'eggs': 2, 'cheese': 3}

Nun ein Beispiel für die neuen Stringmethoden. Bisher mussten führende oder endende Zeichen so entfernt werden:

def strip_quotes(text):
    if text.startswith('"'):
        text = text[1:]
    if text.endswith('"'):
        text = text[:-1]
    return text

Mit den neuen Methoden geht dies wesentlich eleganter:

def strip_quotes(text):
    return text.removeprefix('"').removesuffix('"')

Quelle: https://docs.python.org/release/3.9.0/whatsnew/3.9.html

Bildnachweis: https://www.debugpoint.com/2020/10/python-3-9-released/