python:从print更改为return不会正确处理项目

时间:2014-09-02 00:21:48

标签: python set return

我创建了一个程序,该程序读取couchDB以列出单个Twitter用户的关注者和朋友ID。朋友在“friend_edges”组和“follower_edges”下的粉丝下被识别。

我使用sets -set1.intersection(set.2)之间的交集操作 - 以获取那些既是朋友又是粉丝的人的列表。

当我使用print查看输出时,结果是正确的。但是,当我更改为return来处理结果时,它只处理朋友,而不是关注者。

有人可以告诉我一些我做错了什么以及如何改进代码吗?....提前感谢。

from twitter_login import oauth_login
from twitter_DB import load_from_DB
from sets import Set


def friends_and_followers(doc):
    if 'friend_edges' in doc.keys(): 
        flist = []        
        for x in doc['friend_edges']:
            flist.append(x)
        #print "Number of friends: ", len(flist) <-- shows the right number of items
        return flist
    else:
        return []

    if 'follower_edges' in doc.keys():
        followlist = []        
        for x in doc['follower_edges']:
            followlist.append(x)
        #print "Number of followers: ", len(followlist) <-- shows the right number of items
        return followlist
    else:
        return []

    flist = Set(flist)
    followlist = Set(followlist)
    return flist.intersection(followlist)



if __name__ == '__main__':
    twitter_api = oauth_login()
    DBname = 'users-aguy-+-only'
    ff_results = load_from_DB(DBname)
    print 'number loaded', len(ff_results)

    for doc in ff_results:
        together = friends_and_followers(doc)
        print "Friends and followers of a guy: ", together

1 个答案:

答案 0 :(得分:3)

return语句停止执行该方法并返回到调用方法,因此通过添加一个你要说的return语句,&#34;停在这里并返回到你来自的地方&#34;

您需要将要返回的值存储在变量中,并在方法结束时同时返回它们:

return value1, value2 

你会用这样的话来称呼它:

val1, val2 = get_value1_and_value2(input)

将它分解为两个单独的方法可能更有意义,每个方法都会返回正确的值。