Python - передача списка от одной функции к другой

Попытка передать список из одной функции в другую (teamurls), который, в свою очередь, я буду использовать в другой программе. У меня работает моя программа, где у меня есть вывод значения с использованием yield. (вывести full_team_urls) Как передать список из первой функции во вторую (def - team_urls). Также возможно ли вернуть список и продолжить использование yield? Может ли каждая функция возвращать или выводить только один объект?

Обновлено: попытался передать teamurls во вторую функцию, как показано ниже, и я получаю сообщение об ошибке - TypeError: team_urls () отсутствует 1 обязательный позиционный аргумент: 'teamurls'>

def table():
    url = 'https://www.skysports.com/premier-league-table'

    base_url = 'https://www.skysports.com'

    today = str(date.today())

    premier_r = requests.get(url)

    print(premier_r.status_code)

    premier_soup = BeautifulSoup(premier_r.text, 'html.parser')

    headers = "Position, Team, Pl, W, D, L, F, A, GD, Pts\n"

    premier_soup_tr = premier_soup.find_all('tr', {'class': 'standing-table__row'})

    premier_soup_th = premier_soup.find_all('thead')

    f = open('premier_league_table.csv', 'w')
    f.write("Table as of {}\n".format (today))
    f.write(headers)
    premier_soup_tr = premier_soup.find_all('tr', {'class': 'standing-table__row'})
    result = [[r.text.strip() for r in td.find_all('td', {'class': 'standing-table__cell'})][:-1] for td in premier_soup_tr[1:]]
    teamurls = ([a.find("a",href=True)["href"] for a in premier_soup_tr[1:]])
    return teamurls
    for item in result:

        f.write(",".join(item))
        f.write("\n")
    f.close()


    print('\n Premier league teams full urls:\n')
    for item in teamurls:

        entire_team = []

#        full_team_urls.append(base_url+ item)
        full_team_urls = (base_url + item + '-squad')
        yield full_team_urls

table()

def team_urls(teamurls):
    teams = [i.strip('/') for i in teamurls]
    print (teams)
team_urls()

Один объект может содержать много объектов .. тем не менее, вопросы с (правильным) форматированием обычно лучше.

user2864740 08.11.2018 05:22

Где определена ваша функция первый?

DYZ 08.11.2018 05:22

Является ли код вверху (перед def team_urls ()) методом?

glotchimo 08.11.2018 05:22
yield должен находиться внутри функции.
Barmar 08.11.2018 05:22

Функцию, использующую yields, обычно следует вызывать с помощью оператора итерации, например for team_url in table():

Barmar 08.11.2018 05:23

Я повторяю, какие результаты возвращаются в другой программе в другом файле, если это имеет значение?

anfield 08.11.2018 05:38

Могу я предложить вам пройти официальное руководство по Python? Получение значений из функций и передача аргументов функциям - это действительно вопрос программирования 101 ...

bruno desthuilliers 08.11.2018 15:37
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
7
1 112
1

Ответы 1

Чтобы передать значение в метод, используйте аргументы:

team_urls(teamurls)

Вам нужно будет указать этот аргумент в определении team_urls как такового:

def team_urls(teamurls):

да, я попробовал это и получил TypeError: team_urls (), пропущенный 1 обязательный позиционный аргумент: 'teamurls'

anfield 08.11.2018 05:36

@anfield Я предполагал, что вы понимаете основные соглашения Python. Проверьте правку.

glotchimo 08.11.2018 06:03

@anfield вам все равно нужно указать значение в вызове функции, чтобы это значение было передано в функцию!

glotchimo 08.11.2018 15:57

Другие вопросы по теме