Skip to content

Python Sprach-Spickzettel

Python ist eine plattformübergreifende Computerprogrammiersprache. Es ist eine objektorientierte, dynamisch typisierte Sprache, die ursprünglich für das Schreiben von automatisierten Skripten (Shell) entwickelt wurde. Mit der kontinuierlichen Aktualisierung der Versionen und dem Hinzufügen neuer Sprachfunktionen wird sie immer häufiger für die Entwicklung von unabhängigen, umfangreichen Projekten eingesetzt.

Allgemeines

  • Python unterscheidet zwischen Groß- und Kleinschreibung
  • Die Python-Indizierung beginnt bei 0
  • Python verwendet Leerzeichen (Tabulatoren oder Leerzeichen) zum Einrücken von Code anstelle von geschweiften Klammern.

Hilfe

Hilfe-Startseite help()
Funktionshilfe help(str.replace)
Modulhilfe help(re)

Module (Bibliotheken)

Modulinhalte auflisten dir(module1)
Modul laden import module1 *
Funktion aus Modul aufrufen module1.func1()

Die Import-Anweisung erstellt einen neuen Namensraum und führt alle Anweisungen in der mit diesem Namensraum verknüpften .py-Datei aus. Wenn Sie Modulinhalte in den aktuellen Namensraum laden möchten, verwenden Sie „from module1 import *“.

Skalare Typen

Datentyp prüfen: type(variable)

Ganzzahlen

int/long - Große Ganzzahlen werden automatisch in lange Ganzzahlen umgewandelt

Gleitkommazahlen

float - 64-Bit, kein „double“-Typ

Boolesche Werte

bool - Wahr (True) oder Falsch (False)

Zeichenketten (Strings)

str - Python 2.x Standard: ASCII; Python 3: Unicode

  • Zeichenketten können in einfachen Anführungszeichen/doppelten Anführungszeichen/dreifachen Anführungszeichen stehen
  • Eine Zeichenkette ist eine Folge von Zeichen und kann daher wie jede andere Folge behandelt werden
  • Sonderzeichen können durch Voranstellen von \ oder r ergänzt werden
    str1 = r'this\f?ff'
  • Die Formatierung von Zeichenketten kann auf verschiedene Arten erreicht werden
    template = '%.2f %s haha $%d'
    str1 = template % (4.88, 'hola', 2)

str(), bool(), int() und float() sind ebenfalls explizite Typumwandlungsfunktionen

Nullwert

NoneType(None) - Python ’null’-Wert (es existiert nur eine Instanz des None-Objekts)

  • None ist kein reserviertes Schlüsselwort, sondern die einzige Instanz von „NoneType“
  • None ist ein üblicher Standardwert für optionale Funktionsparameter:
    def func1(a, b, c = None)
  • Übliche Verwendung von None:
    if variable is None :

Datum und Uhrzeit

datetime - Integriertes Python-Modul „datetime“, das die Typen „datetime“, „date“, „time“ usw. bereitstellt.

  • „datetime“ kombiniert die in „date“ und „time“ gespeicherten Informationen
    Datum und Uhrzeit aus Zeichenkette erstellen dt1 = datetime.strptime(‘20091031’, ‘%Y%m%d’)
    „date“-Objekt abrufen dt1.date()
    „time“-Objekt abrufen dt1.time()
    Datum und Uhrzeit als Zeichenkette formatieren dt1.strftime(’%m/%d/%Y %H:%M’)
    Feldwerte ändern dt2 = dt1.replace(minute = 0, second=30)
    Differenz abrufen diff = dt1 - dt2 # diff ist ein ‘datetime.timedelta’-Objekt

Datenstrukturen

Tupel

Ein Tupel ist eine unveränderliche Folge fester Länge.

Tupel erstellen tup1=4,5,6 oder tup1 = (6,7,8)
Verschachteltes Tupel erstellen tup1 = (4,5,6), (7,8)
Folge oder Iterator in Tupel umwandeln tuple([1, 0, 2])
Tupel verknüpfen tup1 + tup2
Tupel entpacken a, b, c = tup1
Variablen vertauschen b, a = a, b

Listen

Eine Liste ist eine veränderbare Folge von Elementen variabler Länge.

Liste erstellen list1 = [1, ‘a’, 3] oder list1 = list(tup1)
Listen verknüpfen list1 + list2 oder list1.extend(list2)
An Liste anhängen list1.append(‘b’)
An angegebener Position einfügen list1.insert(posIdx, ‘b’) **
Element nach Index entfernen valueAtIdx = list1.pop(posIdx)
Erstes Vorkommen eines Wertes entfernen list1.remove(‘a’)
Prüfen, ob Wert in Liste vorhanden ist 3 in list1 => True ***
Liste sortieren list1.sort()
Sortieren mit benutzerdefinierter Funktion list1.sort(key = len) # Nach Länge sortieren

Hinweis:

  • Der „Start“-Index ist enthalten, der „Stop“-Index jedoch nicht.
  • start/stop können weggelassen werden, Standard ist Anfang/Ende.

Slicing (Teilstücke)

Zu den Folgetypen gehören ‘str’, ‘array’, ’tuple’, ’list’ usw.

list1[start:stop]
list1[start:stop:step]
list1[::2]
str1[::-1]

Wörterbücher (Hashes)

Wörterbuch erstellen dict1 ={‘key1’ :‘value1’, 2 :[3, 2]}
Wörterbuch durch Mapping-Funktion erstellen dict(zip(keyList, valueList))
Element abrufen dict1[‘key1’]
Element ändern/hinzufügen dict1[‘key1’] = ’newValue’
Wert abrufen, Standardwert zurückgeben, falls nicht vorhanden dict1.get(‘key1’, defaultValue)
Prüfen, ob Schlüssel vorhanden ist ‘key1’ in dict1
Element löschen del dict1[‘key1’]
Liste der Schlüssel abrufen dict1.keys()
Liste der Werte abrufen dict1.values()
Werte aktualisieren dict1.update(dict2) # dict1-Werte werden durch dict2 ersetzt

Mengen (Sets)

Eine Menge ist eine ungeordnete Sammlung eindeutiger Elemente.

Menge erstellen set([3, 6, 3]) oder {3, 6, 3}
Prüfen, ob set1 eine Untermenge von set2 ist set1.issubset(set2)
Prüfen, ob set2 eine Untermenge von set1 ist set1.issuperset(set2)
Prüfen, ob Mengen identisch sind set1 == set2
Vereinigung (oder) set1
Schnittmenge (und) set1 & set2
Differenz set1 - set2
Symmetrische Differenz (xor) set1 ^ set2

Funktionen

  • Grundform

    def func1(posArg1, keywordArg1 = 1, ..):
  • Häufige Verwendung von „Funktionen sind Objekte“:

    def func1(ops = [str.strip, user_define_func, ..], ..):
        for function in ops:
            value = function(value)
  • Rückgabewerte

    • Wenn am Ende einer Funktion keine return-Anweisung steht, wird kein Wert zurückgegeben.
    • Mehrere Werte über ein Tupel-Objekt zurückgeben
     return (value1, value2)
    
     value1, value2 = func1(..)
  • Anonyme Funktionen (Lambda)

    lambda x : x * 2
    # def func1(x) : return x * 2

Häufig verwendete Funktionen

  1. Enumerate gibt ein Tupel (Key, Value) zurück, wobei Key der Index des aktuellen Elements ist.

    for key, val in enumerate(collection):
  2. Sorted sortiert alle iterierbaren Objekte.

    sorted([2, 1, 3]) => [1, 2, 3]
  3. Zip packt entsprechende Elemente aus Objekten in Tupel und gibt eine Liste dieser Tupel zurück.

    zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..]
  4. Reversed gibt einen umgekehrten Iterator zurück.

    list(reversed(range(10)))

Steuerung und Fluss

  1. Operatoren für „if else“-Bedingungen:

    Prüfen, ob zwei Variablen das gleiche Objekt sind var1 is var2
    Prüfen, ob zwei Variablen unterschiedliche Objekte sind var1 is not var2
    Prüfen, ob zwei Variablen den gleichen Wert haben var1 == var2
  2. Häufige Verwendung des for-Operators:

    for element in iterator :
  3. ‘pass’ - Tut nichts, wird im Allgemeinen als Platzhalteranweisung verwendet.

  4. Ternärer Ausdruck

    value = true-expr if condition else false-expr
  5. Keine switch/case-Anweisung, stattdessen if/elif verwenden.

Objektorientiert

  1. ‘object’ ist die Basis für alle Python-Typen

  2. Alles (Zahlen, Zeichenketten, Funktionen, Klassen, Module usw.) ist ein Objekt, und jedes Objekt hat einen ’type’. Objektvariablen sind Zeiger auf ihren Speicherort.

  3. Grundform eines Objekts

    class MyObject(object):
        # 'self' entspricht 'this' in Java/C++
        def __init__(self, name):
            self.name = name
    
        def memberFunc1(self, arg1):
            ..
    
        @staticmethod
        def classFunc2(arg1):
            ..
    
    obj1 = MyObject('name1') 
    obj1.memberFunc1('a') 
    MyObject.classFunc2('b')
  4. Interaktives Tool:

    dir(variable1) # Listet alle am Objekt verfügbaren Methoden auf

Zeichenkettenoperationen

Listen/Tupel mit einem Trennzeichen verknüpfen

', '.join([ 'v1', 'v2', 'v3']) => 'v1, v2, v3'

Formatierte Zeichenkette

string1 = 'My name is {0} {name}'
newString1 = string1.format('Sean', name = 'Chen')

Zeichenkette teilen

sep = '-'
stringList1 = string1.split(sep)

Teilzeichenkette abrufen

start = 1
string1[start:8]

Zeichenkette mit Nullen auffüllen

month = '5'
month.zfill(2) => '05' 
month = '12'
month.zfill(2) => '12'

Ausnahmebehandlung (Exception Handling)

  1. Grundform
try:
    ..
except ValueError as e:
    print e
except (TypeError, AnotherError):
    ..
except:
    ..
finally:
    ..
  1. Ausnahmen manuell auslösen
raise AssertionError # Assertion fehlgeschlagen
raise SystemExit # Beenden des Programms anfordern
raise RuntimeError('Fehlermeldung: ..')

List, Set und Dictionary Comprehensions

Syntaktischer Zucker, um Code einfacher lesbar und schreibbar zu machen.

  1. List Comprehension

    Erstellt prägnant eine neue Liste, indem Elemente einer Sammlung gefiltert und die Elemente, die den Filter bestehen, in einem einzigen Ausdruck transformiert werden.

    Grundform

    [expr for val in collection if condition]

    Kurzform:

    result = []
    for val in collection:
        if condition:
            result.append(expr)

    Die Filterbedingung kann weggelassen werden, sodass nur der Ausdruck übrig bleibt.

  2. Dictionary Comprehension

    {key-expr : value-expr for value in collection if condition}
  3. Set Comprehension

    Grundform: Identisch mit List Comprehension, nur mit {} anstelle von []

  4. Verschachtelte List Comprehension

    Grundform:

    [expr for val in collection for innerVal in val if condition]