Python Skript
Clelia Albrecht,
Felix Boes,
Johannes Holke
Python ist ja ganz nett, aber ist C++ nicht besser und
überhaupt, was soll dieses Einrücken?
Guido von Rossum
2.) Das Python Datenmodell
3.) Crashkurs
4.) einige Standarddatentypen
5.) Namespacing
6.) Funktionen
7.) Klassen
8.) Ausnahmen
9.) Module
Anmerkung: Namespacing = Namensraum, Variable
1.) Datentyp
2.) Addresse
3.) Wert
4.) Name
II.) Block, Funktion
=> Wo gilt der Name einer Funktion
Namensraum = Namespacing
Standarddatentypen
1.) Zahlen
2.) bool
3.) Sequenzen
4.) None
5.) Dateien
6.) Mengen
7.) Verzeichnisse
Sequenzen:
1.) Gemeinsamkeiten
2.) Oberflaechliche und tiefe Kopien
3.) tuple
4.) list
5.) range
6.) list comprehension
7.) str
2.) Das Python Datenmodell
3.) Crashkurs
4.) einige Standarddatentypen
5.) Namespacing
6.) Funktionen
7.) Klassen
8.) Ausnahmen
9.) Module
Standarddatentypen
1.) Zahlen
2.) bool
3.) Sequenzen
4.) None
5.) Dateien
6.) Mengen
7.) Verzeichnisse
Sequenzen:
1.) Gemeinsamkeiten
2.) Oberflaechliche und tiefe Kopien
3.) tuple
4.) list
5.) range
6.) list comprehension
7.) str
Mengen:
1.) Mengen erzeugen
2.) Operationen fuer set und frozenset
3.) Operationen fuer set
Wissenschaftliche Programmierung
1.) C++
2.) Python
Ueberschaubare Standardbibliothek
Module und Bibliotheken
Die awesome Effizienzmatrix
nicht kompiliert, interpretiert
Python
Python3
Pyta
Python Datenmodell
Python Datenmodell nicht so einfach zu erfassen wie von C++
Python
1.) Objekte
2.) Variablen
Objekte
1.) Identitaet
2.) Typ
3.) Wert
Identitaet eines Objekts aendert sich nie
Objekt, entweder
1.) mutable
2.) immutable
In C C++ sind alle Objekte mutable, ausser mit dem Praefix const
Mehrfach wiederholen, in Python haben Variablen keinen Typ
Garbage Collector
Kommetare: # Gartenzaun
print
python2
python3
python2: print a, b
python3: print (a,b)
Typ und Identitaet
Identitaet eines Objekts bestimmen: id (x)
Typ eines Objekts bestimmen: type (x)
id (x), liefert string kann mit print ausgegeben werden
Zahlen, Python, Zahlentypen
1.) int
2.) long
3.) float
4.) complex
Strings
' oder "
Python strings immutable, d.h. koennen nicht veraendert werden
Bedingungen
Objekte
True
False
vom Typ bool
konsistente Einrueckungen
if x == 42:
print ("A")
elif x == 84:
print ("B")
elif x == 106:
print ("C")
else:
print ("D")
if elif else
Listen
Containertypen
thor = [2, "hallo", 33.3, "Welt", []]
print (thor [0], thor [-1])
Laenge einer Liste: len (thor)
Listen sind mutable,
thor.append (x) erweitert die Liste thor um x
thor+asgard verknuepft zwei Listen
For Schleife
for i in s:
ausdruck
s: Liste
sum = 0
for in range (1,5):
sum += 3*i
print (sum)
sum = 0
for i in range (1,15,3):
sum += i
print (sum)
Funktionen
def funktionsname (parameter):
ausdruck
Die Beschreibung einer Funktion kann mit
help (f)
abgerufen werden
Kein definierbarer Rueckgabetyp anders als in C und C++
mit Return koennen kein, ein oder mehrere Objekte zurueckgegeben werden
Kein Objekt zurueckgegeben: None
Rueckgabetyp: type (x)
Mehrere: mit tuple zusammengefasst
tuple
tuple, liste die nicht geaendert werden kann
def f (i):
if i == 1:
return 1
elif i == 2:
return "Hallo", 44
Module
Python maechtig durch Module
Module: Shared Library
Abbildung: "Python" by Randall Munroe
import modulname
Alle:
Klassen
Funktionen
Objekte
lassen sich ueber
modulname.objektname
erreichen
import math
print (math.sin(math.pi / 3.0))
Nur bestimmte Objekte einbinden
from modulname import oname1, oname2
from math import sin, cos, pi
Standarddatentypen
1.) Funktionen
2.) Klassen
3.) Module
Zahlen
int
bool
float
complex
Objekte dieses Typs sind immutable
bool
True
False
Sequenzen:
Container
Wichtigste Sequenztypen:
list
tuple
str
a = [x, y, z]
a = (x, y, z)
a = "xyz"
Um zu ueberpruefen ob der Wert x mindestens ein Mal in a vorkommt oder nicht gibt es folgende Operationen:
x in a
x not in a
Boolean
list
tuple
str
Container desselben Typs aneinander heften
a + b
n * a
n * a bedeutet man heftet a n mal aneinander
thor = n*[0]
Teilsequenz:
b = a[i:j]
Teilsequenzen: Oberflaechliche Kopien
Oberflaechliche Kopie
Tiefe Kopie
Tiefe Kopie: copy verwenden
vekt_lst = [[0,1], [2,3]], [5,1]]
tuple is immutable
weder eintraege veraenderbar
noch laenge
doppeltupelfkt
list
insert
append
pop
push
remove
clear
copy
reverse
sort
a.insert (i, x) # Fuege x hinter a [i] ein
a.append (x)
x = a.pop ()
a.remove (x) # Entferne die erste Variable mit dem Wert x
a.clear () # Entfernt alle Elemente
a.copy () # Erstellt oberflaechliche Kopie
a.reverse () # Kehrt a um
a.sort () # Sortiert a, falls moeglich