Skip to content

Python-Spickzettel

Python ist eine plattformübergreifende Computerprogrammiersprache. Es ist eine objektorientierte, dynamisch typisierte Sprache, die ursprünglich für das Schreiben von Automatisierungsskripten (Shell) entwickelt wurde. Mit kontinuierlichen Updates und neuen Funktionen wird sie zunehmend für die Entwicklung unabhängiger, großer Projekte eingesetzt.

Allgemeines

  • Python unterscheidet zwischen Groß- und Kleinschreibung (case-sensitive)
  • Der Python-Index beginnt bei 0
  • Python verwendet Leerzeichen (Tabulatoren oder Leerzeichen) zur Einrückung von Code anstelle von geschweiften Klammern.

Hilfe

Hilfe-Startseite help()
Hilfe zu Funktionen help(str.replace)
Hilfe zu Modulen 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 zugehörigen .py-Datei innerhalb dieses Namensraums aus. Wenn Sie Modulinhalte in den aktuellen Namensraum laden möchten, verwenden Sie “from module1 import *”

Skalare Typen

Datentyp prüfen: type(variable)

Ganzzahlen (Integers)

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

Fließkommazahlen (Floats)

float - 64-Bit, es gibt keinen "double"-Typ.

Boole’sche Werte (Booleans)

bool - Wahr (True) oder Falsch (False).

Zeichenfolgen (Strings)

str - Python 2.x standardmäßig ASCII; Python 3 ist Unicode.

  • Strings können in einfachen, doppelten oder dreifachen Anführungszeichen stehen.
  • Ein String ist eine Folge von Zeichen und kann wie jede andere Sequenz behandelt werden.
  • Sonderzeichen können durch Voranstellen von \ oder r (Roh-Strings) dargestellt werden.
    str1 = r'dies\f?ff'
  • Die Formatierung von Strings kann auf verschiedene Arten erreicht werden.
    template = '%.2f %s haha $%d'
    str1 = template % (4.88, 'hola', 2)

str(), bool(), int() und float() sind ebenfalls Funktionen zur expliziten Typumwandlung.

Nullwert (Null)

NoneType(None) - Pythons ’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 häufiger Standardwert für optionale Funktionsparameter:
    def func1(a, b, c = None)
  • Häufige Verwendung von None:
    if variable is None :

Datum und Uhrzeit

datetime - Das integrierte Python-“datetime”-Modul bietet die Typen “datetime”, “date” und “time”.

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

Datenstrukturen

Tupel (Tuples)

Ein Tupel ist eine unveränderliche Sequenz mit fester Länge.

Tupel erstellen tup1=4,5,6 or tup1 = (6,7,8)
Verschachteltes Tupel tup1 = (4,5,6), (7,8)
Sequenz/Iterator in Tupel umwandeln tuple([1, 0, 2])
Tupel verbinden tup1 + tup2
Tupel entpacken a, b, c = tup1
Variablen vertauschen b, a = a, b

Listen (Lists)

Eine Liste ist eine veränderbare Sequenz mit variabler Länge.

Liste erstellen list1 = [1, ‘a’, 3] or list1 = list(tup1)
Listen verbinden list1 + list2 or list1.extend(list2)
An Liste anhängen list1.append(‘b’)
An Position einfügen list1.insert(posIdx, ‘b’)
Über Index entfernen valueAtIdx = list1.pop(posIdx)
Ersten Wert entfernen list1.remove(‘a’)
Prüfen, ob Wert existiert 3 in list1 => True
Liste sortieren list1.sort()
Mit angegebener Funktion sortieren list1.sort(key = len) # Nach Länge sortieren

Hinweis:

  • Der “Start”-Index ist inklusiv, der “Stop”-Index ist exklusiv.
  • start/stop können weggelassen werden, Standard ist Anfang/Ende.

Slicing

Sequenztypen umfassen ‘str’, ‘array’, ’tuple’, ’list’ usw.

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

Wörterbücher (Dictionaries / Hash)

Wörterbuch erstellen dict1 ={‘key1’ :‘value1’, 2 :[3, 2]}
Konstruktion über zip-Funktion dict(zip(keyList, valueList))
Element abrufen dict1[‘key1’]
Element ändern/hinzufügen dict1[‘key1’] = ’newValue’
Wert abrufen (Standardwert falls nicht existiert) dict1.get(‘key1’, defaultValue)
Prüfen, ob Schlüssel existiert ‘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) # Werte von dict1 werden durch dict2 ersetzt

Mengen (Sets)

Eine Menge ist eine ungeordnete Sammlung von eindeutigen Elementen.

Menge erstellen set([3, 6, 3]) or {3, 6, 3}
Teilmenge prüfen set1.issubset(set2)
Obermenge prüfen set1.issuperset(set2)
Gleichheit prüfen set1 == set2
Vereinigung (or) set1
Schnittmenge (and) set1 & set2
Differenzmenge set1 - set2
Symmetrische Differenz (xor) set1 ^ set2

Funktionen

  • Grundform:

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

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

    • Wenn keine return-Anweisung vorhanden ist, wird None zurückgegeben.
    • Mehrere Werte über ein Tupel zurückgeben.
    return (value1, value2)
    
    value1, value2 = func1(..)
  • Anonyme Funktionen (Lambda):

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

Häufige Funktionen

  1. Enumerate: Gibt Tupel (Index, Wert) zurück.

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

    sorted([2, 1, 3]) => [1, 2, 3]
  3. Zip: Führt Elemente aus iterierbaren Objekten zu Tupeln zusammen.

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

    list(reversed(range(10)))

Steuerung und Flow (Control Flow)

  1. Operatoren für “if else” Bedingungen:

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

    for element in iterator :
  3. ‘pass’ - Macht nichts, wird oft als Platzhalter verwendet.

  4. Ternärer Ausdruck

    value = true-expr if condition else false-expr
  5. Es gibt keine switch/case-Anweisungen; verwenden Sie stattdessen if/elif.

Objektorientierung (OOP)

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

  2. Alles (Zahlen, Strings, Funktionen, Klassen, Module usw.) ist ein Objekt; jedes Objekt hat einen ’type’. Objektvariablen sind Zeiger auf deren 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. Interaktive Tools:

    dir(variable1) # Listet alle verfügbaren Methoden eines Objekts auf

Zeichenfolgenoperationen (String Operations)

Liste/Tupel mit einem Trennzeichen verbinden:

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

Zeichenfolge formatieren:

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

Zeichenfolge teilen:

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

Teil der Zeichenfolge abrufen (Slicing):

start = 1
string1[start:8]

Zeichenfolge 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. Ausnahme manuell auslösen:
raise AssertionError # Assertion fehlgeschlagen
raise SystemExit # Programmende anfordern
raise RuntimeError('Fehlermeldung :..')

List, Set und Dict Comprehensions

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

  1. List Comprehension:

    Bildet eine neue Liste durch Filtern und Transformieren von Elementen einer Sammlung in einem prägnanten Ausdruck.

    Grundform:

    [expr for val in collection if condition]

    Kurzform für:

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

    {key-expr : value-expr for value in collection if condition}
  3. Set Comprehension: Gleiches wie List Comprehension, nur mit {} anstelle von [].

  4. Nested List Comprehension (verschachtelt):

    Grundform:

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