my code is as follow:
done = False
def function():
for loop:
code
if not comply:
done = True #let's say that the code enters this if-statement
while done == False:
function()
For some reason when my code enters the if statement, it doesn’t exit the while loop after it’s done with function().
BUT, if I code it like this:
done = False
while done == False:
for loop:
code
if not comply:
done = True #let's say that the code enters this if-statement
…it exits the while loop. What’s going on here?
I made sure that my code enters the if-statement. I haven’t run the debugger yet because my code has a lot of loops (pretty big 2D array) and I gave up on debugging due to it being so tedious. How come “done” isn’t being changed when it’s in a function?
Your issue is that functions create their own namespace, which means that
donewithin the function is a different one thandonein the second example. Useglobal doneto use the firstdoneinstead of creating a new one.An explanation of how to use
globalcan be found here