Jetzt weiß ich über globale Deklarationen, und kann auch herausfinden, warum ein Fehler auftaucht (Count ist in der Funktion referenziert und ich rufe es später), aber es gibt keine Möglichkeit, es zu umgehen. Warum gibt count
einen Fehler, obwohl ich die Funktion f
aufrufen, nachdem ich die Variable definiert? Wie kann ich dieses Code-Snippet umschreiben? Danke für die Hilfe!Variabler Referenzfehler: Wie mache ich das?
def f(x):
if count < x:
<some irrelevvant code>
for i in range(10):
count = 1
f(3)
<some more irrelevant code>
Entschuldigung, ich denke meine ursprüngliche Frage war irgendwie unklar. Der „irrelevant Code“ Ich erwähnte tatsächlich relevant sein könnte, daher bin Hochladen ich meinen ganzen Code:
def ways(l, h):
if count2 < h:
for v in A: #A is a globally defined list
if u != v:
if check(t, v):
count2 += 1
t = v
ways(l, h)
else:
count1 += 1
count1 = 0
for u in A:
count2 = 1
t = u
ways(9, 3)
Nun, da ich rekursiv die Funktion ways
Aufruf bin, kann ich nicht count2
als Funktionsargument in ways
definiert haben. Count2
muss jedes Mal auf 1 zurückgesetzt werden, wenn die u
for-Schleife ausgeführt wird, aber nicht, wenn ways
aufgerufen wird.
Sie übergeben 'count' explizit in' f'. – jonrsharpe
in loop, + f (3, count) –
Sie können 'count = 1' vor dem Definieren von' f (x) 'tun, es wird funktionieren, aber Sie sollten das nicht tun, besser 'count' zu' f 'explizit, da' Explizit ist besser als implizit ' –