Почему переменная не изменяется в цикле?

Собственно вот код :

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

→ Ссылка