Erkundung - Experimente mit Variablen
Kann das gut gehen?
Eine Funktion d
soll Zahlen verdoppeln. Im Folgenden werden verschiedene Vorschläge
zur Implementierung der Funktion gemacht. Geht das jeweils gut aus?
Vorschlag 1:
def d(x):
y = x + x
return y
# Test
a = 2
print(a)
a = d(a)
print(a)
Vorschlag 2:
def d(x):
a = x + x
return a
# Test
a = 2
print(a)
a = d(a)
print(a)
Vorschlag 3:
def d(a):
y = a + a
return y
# Test
a = 2
print(a)
a = d(a)
print(a)
Vorschlag 4:
def d(a):
a = a + a
return a
# Test
a = 2
print(a)
a = d(a)
print(a)
Aufgabe 1
(a) Schaue dir zunächst die verschiedenen Vorschläge zur Implementierung der Funktion d
genau an.
Bei welchen Vorschlägen vermutest du, dass es zu Schwierigkeiten kommt?
(b) Teste anschließend die Vorschläge. Benutze hierzu den Online Python Tutor.
Hier findest du Vorschlag 1 vorbereitet für die Verwendung in Python Tutor:
Kopiere den Python-Quelltext in das Eingabefeld und klicke anschließend auf [Visualize Execution]. Die Anweisungen des Python-Programms kannst du dann Schritt für Schritt ausführen. Beobachte die jeweilige Wirkung der Anweisungen.
Aufgabe 2
Erweitere in den oben gezeigten Vorschlägen die Funktionsdefinition und das Testprogramm
jeweils um die Aufrufe print(locals())
bzw.
print(globals())
:
def d(x):
y = x + x
print(locals())
return y
# Test
a = 2
print(a)
print(globals())
a = d(a)
print(a)
Teste die Vorschläge noch einmal. Kannst du aus den Ergebnissen einen Erklärungsansatz für das Verhalten der vier Implementierungsvorschläge gewinnen?
Nochmal: Kann das gut gehen?
Eine Prozedur d
soll eine vorgegebene Zahl verdoppeln. Im Folgenden werden zwei Vorschläge
zur Implementierung gemacht. Geht das jeweils gut aus?
Vorschlag 1:
def d():
a = a + a
# Test
a = 2
print(a)
d()
print(a)
Vorschlag 2:
def d():
global a
a = a + a
# Test
a = 2
print(a)
d()
print(a)
Aufgabe 3
(a) Schaue dir zunächst die verschiedenen Vorschläge zur Implementierung der Funktion d
genau an.
Bei welchen Vorschlägen vermutest du, dass es zu Schwierigkeiten kommt?
(b) Teste anschließend die Vorschläge mit dem Online Python Tutor.
(c) Erweitere in Vorschlag 2 die Funktionsdefinition und das Testprogramm
auch an geeigneten Stellen um die Aufrufe print(locals())
und
print(globals())
. Erkläre hiermit das Verhalten der Implementierungsvorschläge.