Я бы предпочел две строки, хотя 1 возможна.Причина в том, что если вы дважды вызываете dt.datetime.today (), есть (очень маленький) шанс, что вы получите два разных ответа, если он будет выполнен за доли секунды до полуночи.Также, вероятно, более эффективно сохранить значение, чем дважды вызывать функцию.
import datetime as dt
thisday = dt.datetime.today().date()
thisday -= dt.timedelta(days=max(0,thisday.weekday()-4,0))
В субботу в неделю dayday () возвращает 5, в воскресенье возвращает 6, поэтому мы вычитаем 1 или 2 дня соответственно.В другие дни weekday () - 4 равен нулю или меньше, поэтому функция max возвращает ноль и ничего не вычитается.