4 Daten in Python

Scientific Computing in Computer Science

4 Daten in Python

Prima? res Ziel: Daten zu Containern zusammenfassen, insbesondere Vektoren etc., um vernu? nftige Beispiele rechnen zu ko? nnen. Vorher genauerer Blick auf die Behandlung von Daten in Python notwendig

61

Scientific Computing in Computer Science

Objekte, Identita? ten, Werte, Datentypen

Alle Dinge, mit denen unser Programm arbeitet (Z.B. Zahlen, aber auch Funktionen und noch einige Dinge, die wir noch kennen lernen werden), nennt man in Python Objekte.

Ein Objekt entsteht irgendwann wa? hrend der Programmausfu? hrung und es kann auch wieder verschwinden (nie, solange wir es noch brauchen; na? heres dazu folgt), die Zeitspanne dazwischen ist seine Lebensdauer.

Jedes Objekt hat eine eindeutige Identita? t, die wa? hrend der gesamten Lebensdauer unvera? nderlich ist, ansonsten aber "willku? rlich" ist.

Fu? r uns nicht praktisch wichtig, aber zum Ausprobieren nett, ist die Funktion id,

die die Identita? t eines Objektes zuru? ckliefert (als ganze Zahl; vorstellen: die Adresse im Speicher, wo die zugeho? rigen Bits rumliegen):

>>> id(10) 153599692

>>> id('Hallo') 3084860512L

62

Scientific Computing in Computer Science

Jedes Objekt hat einen Datentyp, der festlegt, wie der Bithaufen des Objekts interpretiert wird (als Zahl, als String, als Funktion, oder als was-auch-immer).

In Python stellen wir uns auf jedem Objekt ein Etikett angebracht vor, auf dem der Datentyp steht.

Die Funktion type sagt uns, was fu? r ein Datentyp vorliegt:

>>> type(7) >>> type('Hallo')

>>> def f(x): return x**2

>>> type(f)

Anmerkung: dass die Typinformation beim Objekt steht, ist ein typisches Merkmal von Skriptsprachen wie Python ? in Sprachen wie C, Java oder Pascal gibt es das nicht. Der Datentyp ergibt sich dann aus dem Programmtext; das ist in der Programmausfu? hrung effizienter (und erlaubt mehr U? berpru? fungen des Programmtexts), aber fu? r den Programmierer etwas umsta? ndlicher.

63

Scientific Computing in Computer Science

Und schlie?lich hat ein Objekt auch noch einen Wert (aus der durch den Datentyp festgelegten Menge mo? glicher Werte).

Oft identifiziert man schlampig das Objekt und seinen Wert ("Das Objekt 7" statt "Das Objekt mit dem Wert 7"), was normalerweise kein Problem macht. Manchmal wird der Unterschied aber wichtig werden ? z.B. weil sich der Wert einiger Objekte vera? ndern kann (wa? hrend die Identita? t immer unvera? nderlich ist).

Apropos "vera? nderbar": eine wesentliche Unterscheidung von Python-Objekten ist die in vera? nderbaren und die unvera? nderbaren.

Bisher kennen wir nur unvera? nderbare Objekte, insbesondere Zahlen und Strings.

Eine Zuweisung a=7 erzeugt (natu? rlich) ein neues Objekt mit Wert 7. Was tut aber

nun a=a+1? Es vera? ndert nicht den Wert des eben erzeugten Objektes, sondern

erzeugt ein neues, hier mit Wert 8:

>>> a = 7

>>> a = a + 1

>>> id(a)

>>> id(a)

140078832

140078820

Der Bezeichner a wird also an ein neues Objekt gebunden!

64

Scientific Computing in Computer Science

Operationen, die unvera? nderbare Objekte als Ergebnis haben, du? rfen eine Referenz auf ein beliebiges Objekt mit dem richtigen Wert zuru? ckliefern, wir haben also u.U. mehrere Referenzen auf dasselbe Objekt:

>>> a = 7 >>> id(a) 143642352

>>> b = 35/5 # ist auch 7 >>> id(b) 143642352 >>> b = 7.0 # das ist was anderes! >>> id(b) 143858356

Wir haben aber keinen Anspruch darauf, dass Objekte mit gleichem Wert auch gleiche Identita? ten haben.

Ob ein Objekt vera? nderbar ist oder nicht, legt der Datentyp fest (es gibt also Datentypen fu? r vera? nderbare Objekte und Datentypen fu? r unvera? nderbare Objekte).

Um Beispiele fu? r vera? nderbare Objekte zu bekommen, mu? ssen wir also neue Datentypen kennen lernen!

65

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download