Игнорировать имена параметров и функций. Я проверил все функции, и с ними все в порядке.
В следующем коде даже после success был напечатан код в # не мутирующая секция остальной части выполняется.
Также, несмотря на наличие ошибок, l oop не завершается.
def move(ar,x,y,xi,yi): #move(array,x,y,x-increment,y-increment)
print(x,y,xi,yi)
global flag
while flag != 1:
if x>=xsize or x<0 or y >=ysize or y<0:
function2(ar,x-xi,y-yi,xi,yi,eq)
try:
if (ar[y][x] == 1) and (function1(ar,x,y,xi,yi) == 1):
flag = 1
else:
#non-mutating code
except Exception as e:
return
print("success")