Frage zu lokalen Variablen in Methoden + Range Befehl
Verfasst: Donnerstag 6. Januar 2011, 03:06
Hallo,
ich lerne gerade Python und habe zu folgendem Test-Code zwei Fragen:
1. Frage bzgl. der Variablenbezeichnungen innerhalb einer Klasse
Innerhalb von Methoden soll man bei Variablen zum einen ja self.xxx verwenden, weil python dadurch eine pro Objekt eindeutige Variable erstellt. Außerdem soll man für lokale Variablen __variable schreiben, weil dies wiederum intern in eine eindeutige Variable übersetzt wird.
Fragen: Sollte man nun wirklich für jede noch so kleine temporäre Variable in einer Methode self.__i statt z.B. i schreiben, oder sind Variablen ohne self. und ohne __ automatisch lokal?
2. Frage zum Range Befehl in einer FOR-Schleife.
In Python gibt es wohl kein "for i=x to y", was ich schade finde. Statt einem "for i=x to y" müsste man also z.B. "for i in range(x+1, y+1)" schreiben.
Wie ist das ganze von der Performance und vom Speicherbedarf her zu sehen? Wenn ich nach diesem Schema eine Schleife von 1..10000 durchlaufe, wird dann intern wirklich erst eine Liste mit allen Zahlen zwischen 1..10000 [mit entsprechendem Speicherbedarf] erzeugt, die dann abgearbeitet wird, oder optimiert Python das intern? Kann man den Range-Befehl guten Gewissens verwenden, oder ist es besser, größere Schleifen von Hand nachzubilden?
Danke schonmal
ich lerne gerade Python und habe zu folgendem Test-Code zwei Fragen:
Code: Alles auswählen
class Test(object):
def fak(self, f):
faku = 1
for x in range(2,f+1):
faku = faku * x
return faku
ob = Test()
print(ob.fak(3)) # 6
print(ob.faku) # 'Test' has no attribute 'faku'Innerhalb von Methoden soll man bei Variablen zum einen ja self.xxx verwenden, weil python dadurch eine pro Objekt eindeutige Variable erstellt. Außerdem soll man für lokale Variablen __variable schreiben, weil dies wiederum intern in eine eindeutige Variable übersetzt wird.
Fragen: Sollte man nun wirklich für jede noch so kleine temporäre Variable in einer Methode self.__i statt z.B. i schreiben, oder sind Variablen ohne self. und ohne __ automatisch lokal?
2. Frage zum Range Befehl in einer FOR-Schleife.
In Python gibt es wohl kein "for i=x to y", was ich schade finde. Statt einem "for i=x to y" müsste man also z.B. "for i in range(x+1, y+1)" schreiben.
Wie ist das ganze von der Performance und vom Speicherbedarf her zu sehen? Wenn ich nach diesem Schema eine Schleife von 1..10000 durchlaufe, wird dann intern wirklich erst eine Liste mit allen Zahlen zwischen 1..10000 [mit entsprechendem Speicherbedarf] erzeugt, die dann abgearbeitet wird, oder optimiert Python das intern? Kann man den Range-Befehl guten Gewissens verwenden, oder ist es besser, größere Schleifen von Hand nachzubilden?
Danke schonmal