Перенос переменной из одной функции в другую на Python

Рейтинг: -1Ответов: 1Опубликовано: 07.02.2023

Есть функция парсинга сайта find_news, которая возвращает две переменные:
return (filteredNews[0], filteredLinks[0])

Далее с помощью библиотеки telebot необходимо вернуть эти данные, делаю так:

if message.text == "Узнать последние новости":
        filteredNews = find_news()
        filteredLinks = find_news()
        mess = f'{filteredNews} Подробнее по ссылке - {filteredLinks}'

Логически понимаю что делаю неправильно, но как исправить уже всю голову сломал, пробовал вызывать функцию один раз, но тогда он не видит переменные которые эта функция вернула.
Буду рад любой подсказке

Ответы

▲ 2

Запись вида (filteredNews[0], filteredLinks[0]) называется кортежем (tuple). Кортеж - это контейнер, содержащий произвольное количество значений любых типов. Получается, ваша функция возвращает не одно значение, а сразу кортеж. Ну а как дальше с этим кортежем работать - зависит от того, что вам нужно. Например, его можно сразу же распаковать:

filteredNews, filteredLinks = find_news()
mess = f'{filteredNews} Подробнее по ссылке - {filteredLinks}'

Можно оставить запакованным, чтобы распаковать позднее:

t = find_news()
filteredNews, filteredLinks = t
mess = f'{filteredNews} Подробнее по ссылке - {filteredLinks}'

Можно распаковать его при передаче в какую-либо функцию:

def f(news, links):
    mess = f'{news} Подробнее по ссылке - {links}'
    print(mess)
t = find_news()
f(*t)

А можно просто напечатать:

t = find_news()
print(t)

выведет:

(<news>, <link>)