Meine Funktionen in Python geben keine Werte zurück, die ich von ihnen erwarte. Hier ist ein MWE:Funktionen werden nicht ausgeführt
a = 6
b = 18
c = 0
def random_function(c):
c = b/a
return c
random_function(c)
print(c)
Ich erwarte, dass diese Funktion 3 drucken, sondern druckt es 0. Ich habe gerade 2,7-3,6 aktualisiert und dies würde in 2.7 gearbeitet haben - was mache ich falsch?
Sie haben zwei völlig getrennte Variablen ändern - die lokalen Variable (eigentlich ein Parameter) innerhalb von 'random_function()' und die globale Variable mit dem gleichen Namen. Es besteht ABSOLUT KEINE VERBINDUNG zwischen den beiden - das globale "c" zu übergeben, da der Wert für den Parameter "c" keine solche Verbindung erzeugt. – jasonharper
Das hätte in Python 2 genauso funktioniert **, obwohl Ihre 'random_function' aufgrund des Unterschieds im Operator'/'etwas anderes zurückgegeben hätte, aber' print (c) '' '0 'in beiden. –
Deklarieren Sie "c" als global mit einer 'global c'-Anweisung am Anfang der Funktion. Variablen, die in Funktionen erstellt werden, sind standardmäßig lokal. Eine bessere Alternative wäre, den Rückgabewert explizit der äußeren 'c'-Variablen zuzuordnen. – martineau