Сохраните вывод функции в переменной - PullRequest
0 голосов
/ 04 августа 2020

У меня есть следующая функция, которая возвращает данные:

def get_comments():
 for i in data:
  comment_data = i['comments']
  for z in comment_data:
   comments = comment_data['data']
   for j in comments:
    comment = j['message']
    print(comment)

Я хотел бы сохранить вывод этой функции в переменную. Я использую print вместо return (в функции get_comments), так как return возвращает только последнюю строку моих данных. Вот что я попытался учесть:

def hypothetical(x):
return x

z = hypothetical(get_comments())
print(z)

Однако выход переменной z - «None».

Когда я пробую другое значение (например):

 z = hypothetical(5)
 print(z)

z равно 5 конечно. Спасибо

1 Ответ

5 голосов
/ 04 августа 2020

Вместо того, чтобы печатать каждую строку, вам нужно добавить ее в другую структуру данных (например, список) и вернуть весь список в конце get_comments().

Например:

def get_comments():
  to_return = []
  for i in data:
    comment_data = i['comments']
    for z in comment_data:
      comments = comment_data['data']
      for j in comments:
        comment = j['message']
        to_return.append(comment)
  return to_return

Если вы хотите стать немного более продвинутым, вы можете вместо этого создать generator, используя yield:

def get_comments():
  for i in data:
    comment_data = i['comments']
    for z in comment_data:
      comments = comment_data['data']
      for j in comments:
        comment = j['message']
        yield comment

Затем вы можете перебирать get_comments(), и он go вернется в генератор каждый раз, чтобы получить следующий комментарий. Или вы можете просто преобразовать генератор в список с list(get_comments()), чтобы вернуться к желаемому списку комментариев.

Обратитесь к этот отличный ответ , чтобы узнать больше о yield и генераторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...