Почему переменная не изменяется в цикле?
Собственно вот код :
import schedule
import time
def time_csv():
time_date = datetime.datetime.today()
return time_date
time_date = time_csv()
while True:
schedule.every(2).seconds.do(time_csv)
print(time_date)
schedule.run_pending()
time.sleep(3)
А вот результат выполнения :
2020-07-11 14:40:31.429645
2020-07-11 14:40:31.429645
2020-07-11 14:40:31.429645
2020-07-11 14:40:31.429645
2020-07-11 14:40:31.429645
2020-07-11 14:40:31.429645
2020-07-11 14:40:31.429645
2020-07-11 14:40:31.429645
2020-07-11 14:40:31.429645
почему время берется только при первом старте функции? как решить это ? спасибо заранее.
Ответы (2 шт):
Автор решения: DD_N0p
→ Ссылка
вот пример бесконечного цикла с изменением времени
def time_csv():
return datetime.datetime.today()
while True:
print(time_csv())
time.sleep(3)
Автор решения: Никита Смирнов
→ Ссылка
Вы до цикла приравняли переменную time_date = time_csv(), а потом в самом цикле бесконечно её вызываете, поэтому она показывает постоянно одно значение. После функции time_date уже находится вне области видимости функции и ей постоянно присвоено одно значение. В вашем случае наверное гораздо проще в теле цикла принтом вызывать саму функцию, т.е print(time_csv()), как написал выше DD_N0p