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而不是return 时- 它会打印所有结果。如何返回与print相同的结果?

4

2 回答 2

2

当您使用 return 时,它会退出函数并且不会像使用 print 那样继续迭代循环。试试产量。

于 2013-02-11T18:36:29.303 回答
1

问题是当你的循环命中第一条return语句时,函数将退出并且循环不会继续。使用print将允许循环继续。

两个选项是在开始循环之前创建一个列表,将状态添加到循环中的列表中,然后在循环之后返回列表。

使用yield关键字而不是return将允许其他函数循环结果。yield可以在此处找到有关该关键字的更多详细信息: “yield”关键字在 Python 中的作用是什么?(加上实际文档:http ://docs.python.org/2.7/reference/expressions.html?highlight=yield#yield-expressions )。

于 2013-02-11T18:42:09.117 回答