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
-
Enumerate gibt ein Tupel (Key, Value) zurück, wobei Key der Index des aktuellen Elements ist.
for key, val in enumerate(collection): -
Sorted sortiert alle iterierbaren Objekte.
sorted([2, 1, 3]) => [1, 2, 3] -
Zip packt entsprechende Elemente aus Objekten in Tupel und gibt eine Liste dieser Tupel zurück.
zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..] -
Reversed gibt einen umgekehrten Iterator zurück.
list(reversed(range(10)))
Steuerung und Fluss
-
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 -
Häufige Verwendung des for-Operators:
for element in iterator : -
‘pass’ - Tut nichts, wird im Allgemeinen als Platzhalteranweisung verwendet.
-
Ternärer Ausdruck
value = true-expr if condition else false-expr -
Keine switch/case-Anweisung, stattdessen if/elif verwenden.
Objektorientiert
-
‘object’ ist die Basis für alle Python-Typen
-
Alles (Zahlen, Zeichenketten, Funktionen, Klassen, Module usw.) ist ein Objekt, und jedes Objekt hat einen ’type’. Objektvariablen sind Zeiger auf ihren 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') -
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)
- Grundform
try:
..
except ValueError as e:
print e
except (TypeError, AnotherError):
..
except:
..
finally:
..- 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.
-
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.
-
Dictionary Comprehension
{key-expr : value-expr for value in collection if condition} -
Set Comprehension
Grundform: Identisch mit List Comprehension, nur mit {} anstelle von []
-
Verschachtelte List Comprehension
Grundform:
[expr for val in collection for innerVal in val if condition]