2013-02-11 4 views
0
# -*- coding: utf-8 -*- 
import os 
import fbconsole 
here = os.path.dirname(os.path.abspath(__file__)) 


def fbfeed(): 
    fbconsole.APP_ID = '588914247790498' 
    fbconsole.AUTH_SCOPE = ['publish_stream', 'publish_checkins', 'read_stream', 'offline_access'] 
    fbconsole.authenticate() 
    newsfeed = fbconsole.get('/me/home') 
    newsfeedData = newsfeed["data"] 
    for status in newsfeedData: 
     fromn = [status['from']['name']] 
     name = [status.get('name', None)] 
     description = [status.get('description', None)] 
     if description == name is None: 
      return fromn 
     elif description is None: 
      return fromn.extend(name) 
     elif name is None: 
      return fromn.extend(description) 
     else: 
      return fromn + name + description 

Мой код возвращает только одну строку, но когда я использую печать вместо возвращения - печатает все результаты. Как я могу вернуть те же результаты, что и в случае print ??Как вернуть все строки

+1

изменение вы возвращаете для урока, тогда вы можете '' для f в feeds(): '' – sotapme

ответ

2

Когда вы используете return, он выходит из функции и не выполняет повторение цикла, как при печати. Попробуйте урожай.

+0

нормально, это работает, и как я могу определить этот результат для переменной? Я хочу отправить его в шаблон mako. –

+1

Когда вы используете оператор yield, он превращает функцию в генератор, который можно использовать как список. Самый простой способ преобразовать это в список - это просто сказать x = list (fbfeed()) – Hoopdady

+0

, он показывает мне вывод как '[u '\ u0406 \ u0440 \ u0438 \ u043d \ u0430 \ u0421 \ u0435 \ u0445', Нет, u'Изменить шаблон Ur для R3D здесь -> http://bit.ly/14NYfaJ?477259&cid=theme '] 'как его исправить ??? –

1

Проблема заключается в том, что когда ваша петля попадает в первый оператор return, функция выйдет, и цикл не будет продолжен. Использование print позволит продолжить цикл.

Два варианта: создать список перед началом цикла, добавить состояния в список в цикле и затем вернуть список после цикла.

Использование ключевого слова yield вместо return позволит другие функции, чтобы перебрать результат. Более подробную информацию о ключе yield можно найти здесь: What does the "yield" keyword do in Python? (плюс в фактических документах: http://docs.python.org/2.7/reference/expressions.html?highlight=yield#yield-expressions).

Смежные вопросы