Vorlesungsskript 11

Zuweisungen und Löschanweisungen

Python-Programme bestehen aus Anweisungen (engl. statements). Alles, was man im interaktiven Modus am Prompt des Python-Interpreters eingeben und durch Drücken von Enter ausführen lassen kann, ist eine Anweisung.

Wir kennen bereits verschiedene Sorten von Anweisungen:

In diesem Vorlesungsskript lernen wir einige weitere Sorten von Zuweisungen kennen sowie eine weitere Sorte von Anweisungen: Löschanweisungen.

Zuweisungen

Neben der einfachen Zuweisung mit = gibt es zu jedem der Operatoren +, -, *, /, //, % und ** einen speziellen Zuweisungsoperator: +=, -=, *=, /=, //=, %= und **=. Hiermit kann man mit dem Wert einer Variablen eine Berechnung (oder andere Operation) durchführen und das Ergebnis sofort derselben Variablen zuweisen. Zum Beispiel macht die Zuweisung a += 1 dasselbe wie die Zuweisung a = a + 1. Die kürzere Schreibweise macht den Code etwas kompakter. Sie wird vor allem für Variablen verwendet, die sich häufig auf dieselbe Weise ändern. Zum Beispiel könnten wir unser Zeilen zählendes Programm aus Vorlesungsskript 06 auch wie folgt schreiben:

import sys

line_count = 0
for line in sys.stdin:
    line_count += 1
print(line_count)

Weitere Beispiele für die Wirkung der Zuweisungsoperatoren:

>>> a = 1
>>> a += 2
>>> a
3
>>> a -= 1
>>> a
2
>>> a *= 7
>>> a
14
>>> a /= 2
>>> a
7
>>> a //= 2
>>> a
3
>>> a %= 2
>>> a
1
>>> a = 2
>>> a **= 3
>>> a
8
>>> s = 'A'
>>> s *= 5
>>> s
'AAAAA'
>>> s += 'BBBBB'
>>> s
'AAAAABBBBB'

In späteren Vorlesungsskripten werden wir noch weitere Sorten von Zuweisungen kennenlernen, speziell für Listen und Dictionarys.

Löschanweisungen

Mit dem Schlüsselwort del (für delete), gefolgt vom Namen einer Variablen, wird die Variable wieder gelöscht. Sie hört dann auf zu existieren, und weitere Versuche, auf sie zuzugreifen, geben eine Fehlermeldung, genau so, wie wenn sie nie definiert worden wäre:

>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> a = 3
>>> a
3
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

In der Praxis muss man fast nie Variablen explizit löschen. Sie werden am Ende des Programms automatisch gelöscht. Wir werden jedoch später noch weitere Sorten von Löschanweisungen kennenlernen, mit denen Elemente aus Listen und Dictionarys gelöscht werden können.