Невозможно сбросить индекс в функции просмотра
Я вызываю функцию представления и эта функция вызывает другую функцию на таймере длительностью 1 мин. Проблема заключается в сбросе значения 'i'.
Может ли кто-нибудь помочь мне выяснить, как это исправить или придумать новый способ сделать это.
Я хочу вызвать функцию getABC на таймере длительностью в одну минуту и заставить ее просмотреть список 'listOfStrings', а затем начать список заново, как только он достигнет конца.
У меня такое чувство, что я смотрю на что-то сквозь пальцы и делаю это намного сложнее, чем нужно.
def viewfunction(request):
listOfStrings = [...list Of Strings ]
i = 0
def func():
for each in range(i-60, i-1):
getABC(listOfStrings[each], each)
if listOfStrings[each] == 'ZYXI':
i = 0
return
schedule.every(1).minutes.do(lambda: func())
while True:
i += 1
schedule.run_pending()
time.sleep(1)
Проблема с кодом выше заключается в том, что 'i' в "for each in range(i-60, i-1):" получает UnboundLocalError: local variable 'i' referred before assignment.
Затем я пытаюсь передать i в качестве параметра, а затем вернуть его, но не знаю, как получить доступ к переменной return.
def viewfunction(request):
listOfStrings = [...list Of Strings ]
i = 0
def func(i):
for each in range(i-60, i-1):
getABC (listOfStrings[each], each)
if listOfStrings[each] == 'ZYXI':
i = 0
return
schedule.every(1).minutes.do(lambda: func(i))
while True:
i += 1
schedule.run_pending()
time.sleep(1)
В итоге мне нужно, чтобы функция getABC вызывалась каждые 1 минуту, при этом передавая каждую итерацию в качестве параметра при каждом вызове. А затем, достигнув конца списка, перезапустить и начать снова с начала списка. Бесконечный цикл.