3.3
 Technisches

3.3.1
 Statements und Expressions

Unterschied zwischen Statements und Expressions

Anweisungen (statements)

 25

Werden vom Python-Interpreter ausgeführt und evaluieren zu keinem Wert. print Statement  26

 
print "Something to print"

Ausdrücke (expressions)  27

Werden zu einem Wert (Objekt) evaluiert und enthalten keine Statements. Boole’sche und andere Ausdrücke innerhalb von Statements

 
# If-Statement mit komplexen Ausdrücken drin 
if len("A"+"String") > 5: 
   print "A"+"String".lower()

Listenbildung via Anweisungen und Ausdruck 
Listenbildung mit iterativen Statements

 
sl = list() 
for c in "St. Moritz-Str. 23": 
   if c.isalnum(): 
      sl.append(c)
Listenbildung mit einem Ausdruck: Listenkomprehension

 
el = [c for c in "St. Moritz-Str. 23" if c.isalnum()]

Funktionsdefinition via Anweisungen und Ausdruck 
Funktionsdefinition mit iterativem Statement  28

 
def sf(s): 
   return re.sub(r\s+,,s)
Funktionsdefinition via Lambda-Ausdruck

 
ef = lambda s: re.sub(r\s+,,s)

Lambda-Ausdrücke (Lambda-Calculus)

Mathematische Notation zur Definition von anonymen Funktionen:

3.3.2
 Klassen und Objekte

Grundlegendes zu Objekten 

Objektorientierte Modellierung 
pict
Quelle: http://www.python-kurs.eu/klassen.php eachte: Kontoinhaber ist eine Eigenschaft von

Klassen/Typen und Objekte 


Klassen und Individuen in der Welt

Gattung

Individuum

Mensch

Elvis Presley

Hauptstadt

Paris

Klassen und Objekte in Python

Klasse/Datentyp

Objekt/Instanz

int

3

str

abc

unicode

uabc

nltk.probability.FreqDist

nltk.FreqDist([1,1,2])

nltk.text.Text

nltk.Text(["a","text"])


Wichtig: Objekte sind Instanzen eines Typs oder einer Klasse.

Methodenaufrufe 
Methoden werden normalerweise auf der Ebene der Klasse/Typs definiert und direkt auf den Objekten angewendet .

Syntaktischer Zucker für Typen

type.function(object) = object.function()
str.lower("A test") = "A Test".lower()

Syntaktischer Zucker für Klassen

class.function(object) = object.function()
nltk.Text.vocab(nltk.Text(["a","b","c"])) =      nltk.Text(["a","b","c"]).vocab()

Jeder Methodenaufruf von einem Objekt aus hat als 1. Argument implizit das Objekt, das die Methode aufruft: vocab(self).  29