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

私のコードは 1 つの文字列しか返しませんが、 returnの代わりにprintを使用すると、すべての結果が出力されます。印刷の場合と同じ結果を返すにはどうすればよいですか??

4

2 に答える 2

2

return を使用すると、関数を終了し、print の場合のようにループを反復し続けません。収穫してみてください。

于 2013-02-11T18:36:29.303 に答える
1

return問題は、ループが最初のステートメントにヒットすると、関数が終了し、ループが続行されないことです。を使用printすると、ループを続行できます。

2つのオプションは、ループを開始する前にリストを作成し、ループ内のリストにステータスを追加してから、ループ後にリストを返すことです。

yieldの代わりにキーワードを使用すると、他の関数が結果をループreturnできるようになります。キーワードの詳細については、こちらをご覧ください:「yield」キーワードはPythonで何をしますか?(さらに、実際のドキュメント:http ://docs.python.org/2.7/reference/expressions.html?highlight=yield#yield-expressions )。yield

于 2013-02-11T18:42:09.117 に答える