Studieren Sie folgenden Code: import inspect # Ein bisschen Python Magic, um Funktionsname und Zeilennummer auszugeben. Duerfen Sie ignorieren. def niceInfo(s): print "Funktion %s, Zeile %d:" % (inspect.getframeinfo(inspect.currentframe().f_back)[2], inspect.currentframe().f_back.f_lineno) print s print # foo: Gibt das Quadrat vom Argument zurueck. # Die Variablen a und b sind hier lokal und haben nicht mit den Variablen a und b ausserhalb zu tun, # mal abgesehen davon, dass der Wert der Variablen b der Funktion bar in die Variable a der Funktion foo kopiert wird. def foo(a): b=a*a niceInfo("a=%d, b=%d" % (a,b)) return b # bar: Gibt das Quadrat (mit Hilfe von foo) minus 4 zurueck. def bar(b): a=foo(b)-4 niceInfo("a=%d, b=%d"% (a,b)) return a a = 4 b = 5 niceInfo("a=%d, b=%d" % (a,b)) c = bar(3) # Die Variablen a und b werden nicht veraendert! niceInfo("a=%d, b=%d, c=%d" % (a,b,c))