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
-
Enumerate: Gibt Tupel (Index, Wert) zurück.
for key, val in enumerate(collection): -
Sorted: Sortiert alle iterierbaren Objekte.
sorted([2, 1, 3]) => [1, 2, 3] -
Zip: Führt Elemente aus iterierbaren Objekten zu Tupeln zusammen.
zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..] -
Reversed: Gibt einen umgekehrten Iterator zurück.
list(reversed(range(10)))
Steuerung und Flow (Control Flow)
-
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 -
Häufige Verwendung des for-Operators:
for element in iterator : -
‘pass’ - Macht nichts, wird oft als Platzhalter verwendet.
-
Ternärer Ausdruck
value = true-expr if condition else false-expr -
Es gibt keine switch/case-Anweisungen; verwenden Sie stattdessen if/elif.
Objektorientierung (OOP)
-
‘object’ ist die Basis für alle Python-Typen.
-
Alles (Zahlen, Strings, Funktionen, Klassen, Module usw.) ist ein Objekt; jedes Objekt hat einen ’type’. Objektvariablen sind Zeiger auf deren Speicherort.
-
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') -
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)
- Grundform:
try:
..
except ValueError as e:
print(e)
except (TypeError, AnotherError):
..
except:
..
finally:
..- 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.
-
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) -
Dictionary Comprehension:
{key-expr : value-expr for value in collection if condition} -
Set Comprehension: Gleiches wie List Comprehension, nur mit {} anstelle von [].
-
Nested List Comprehension (verschachtelt):
Grundform:
[expr for val in collection for innerVal in val if condition]