Ваша функция определена, но не выполнена. И, если он был выполнен, он не изменил бы значение mail
, потому что у него есть собственное пространство имен переменных, поэтому он мог получить доступ к mail
, но не установить его. То, что вы делаете там, объявляет новую переменную, также называемую mail
в этой функции. Кроме того, ваш текст уже задан и не будет обновляться при изменении значения mail
. Я предлагаю это решение:
text = "some text {mail}\n" \
"some text {date}\n" \
"some text"
def make_text(text, date):
mail = "a@a.com"
return text.format(mail=mail, date=date)
text = make_text(text=text, date=date.today())
Возможно, вы также захотите создать отдельные функции для установки mail
и создания текста, но не забудьте вернуть новый mail
, который вы делаете, во внешнюю область.