23.7 Lokale Referenzen 

Der nächste Optimierungsansatz ist in gewisser Weise ähnlich zu dem des vorherigen Kapitels: Das Verwenden von lokalen Referenzen ist grundsätzlich schneller als das Verwenden von globalen Referenzen. Das liegt daran, dass jeder verwendete Bezeichner zunächst im lokalen Namensraum vermutet wird. Erst danach wird die Suche auf den globalen Namensraum ausgeweitet.
Dieser Optimierungsansatz soll anhand der folgenden Beispielfunktion veranschaulicht werden, die, analog zum Beispiel des vorherigen Kapitels, das Quadrat aller natürlichen Zahlen von 0 bis 100 berechnet. Beachten Sie, dass die dafür verwendete Built-in Function pow im globalen Namensraum existiert.
def f1(): for i in xrange(100): pow(i, 2)
Die Funktion f1 dient ausschließlich zu Demonstrationszwecken, weswegen das berechnete Quadrat direkt nach der Berechnung verworfen wird. Dennoch wird bei jedem Aufruf der Built-in Function pow zunächst der lokale Namensraum nach dem Namen pow durchsucht, bevor die Funktion schließlich im globalen Namensraum gefunden wird. Effizienter wäre es also, die Funktion pow durch eine Referenz im lokalen Namensraum direkt zu referenzieren, wie es in der Funktion f2 gemacht wird:
def f2(): p = pow for i in xrange(100): p(i, 2)
Die Funktion f2 kann um ca. 10 % schneller ausgeführt werden als die Funktion f1.




bestellen





