Hey Leute,
ich hab so ein kleines Programm geschrieben, damit ich die Funktion lambda besser verstehe. Diese lautet :
#importer.py
def testinglambda():
liste = []
for i in range(5):
liste.append(lambda x: i**x)
return liste
Ich lass die Skripte in Windows laufen per Eingabeaufforderung. Meine commands lauten folgendermaßen:
-cd Desktop/Python (wo mein modul drinnen ist)
-python
-import importer
-importer.testinglambda()[0](4)
So, nun kam folgender Wert raus: 256. Das verstehe ich einfach nicht, es sollte doch bei Index 0 auch 0 rauskommen. Stattdessen beträgt jeder Wert in der Liste 'liste' 256. Nun dachte ich mir, dass wenn man importer.testinglambda(...) aufruft, die loop ohne die Funktion durchläuft, i aber im Scope gespeichert (warum auch immer...) bleibt. Sobald man die Funktion dann aufruft, nimmt sie den Wert aus dem Scope ...was aber glaub ich doch gar keinen Sinn macht?? Hat jemand eine Idee woran das liegen kann. Übrigens, das Problem habe ich behoben, indem ich 'nen Defaultvalue hinzugefügt habe:
-lamba x, i=i: i**x
Trotzdem verstehe ich das einfach nicht
. Hat jemand vielleicht eine Idee? Wäre sehr dankbar für hilfreiche Antworten! Danke.
ich hab so ein kleines Programm geschrieben, damit ich die Funktion lambda besser verstehe. Diese lautet :
#importer.py
def testinglambda():
liste = []
for i in range(5):
liste.append(lambda x: i**x)
return liste
Ich lass die Skripte in Windows laufen per Eingabeaufforderung. Meine commands lauten folgendermaßen:
-cd Desktop/Python (wo mein modul drinnen ist)
-python
-import importer
-importer.testinglambda()[0](4)
So, nun kam folgender Wert raus: 256. Das verstehe ich einfach nicht, es sollte doch bei Index 0 auch 0 rauskommen. Stattdessen beträgt jeder Wert in der Liste 'liste' 256. Nun dachte ich mir, dass wenn man importer.testinglambda(...) aufruft, die loop ohne die Funktion durchläuft, i aber im Scope gespeichert (warum auch immer...) bleibt. Sobald man die Funktion dann aufruft, nimmt sie den Wert aus dem Scope ...was aber glaub ich doch gar keinen Sinn macht?? Hat jemand eine Idee woran das liegen kann. Übrigens, das Problem habe ich behoben, indem ich 'nen Defaultvalue hinzugefügt habe:
-lamba x, i=i: i**x
Trotzdem verstehe ich das einfach nicht