Python:return语句不起作用

时间:2014-11-24 11:44:57

标签: python function

我正在尝试使用以下程序打印名称列表

def search():
    with open('business_ten.json') as f:
        data=f.read()
        jsondata=json.loads(data)


    for row in jsondata['rows']:
        #print row['text']
        a=str(row['name'])

        #print a    
        return a


search()

如果我把return语句,它不打印,但如果我把print语句它工作 我希望return语句有效。我想要return语句而不是print语句

4 个答案:

答案 0 :(得分:0)

这是由于缩进问题导致您的return语句无效。 将for循环放在search

def search():
    with open('business_ten.json') as f:
        data=f.read()
        jsondata=json.loads(data)
        for row in jsondata['rows']:
            a=str(row['name'])  
            yield a

data = search()
print list(data)

print list(search())

答案 1 :(得分:0)

你不能从循环内部返回,因为该方法将在循环的第一部分之后完成。看起来您需要打印a,将a附加到数据列表,然后在循环结束后返回所述列表。

你的缩进也非常有趣。我不确定你是如何复制你的代码的,或者这实际上是你的代码的样子,但是我会想象前者,否则它将永远不会运行。您是否可以编辑问题以纠正问题?

答案 2 :(得分:0)

我想这就是你想要的,但你可以更好地解释它......

def search():
    with open('business_ten.json') as f:
        data=f.read()
        jsondata=json.loads(data)
        for row in jsondata['rows']:
            a=str(row['name'])  
            yield a

print list(search())

答案 3 :(得分:0)

创建您之前打印的所有字符串的列表并返回该列表。

def search():
    with open('business_ten.json') as f:
        data=f.read()
        jsondata=json.loads(data)
    return_data = []
    for row in jsondata['rows']:
        #print row['text']
        a=str(row['name'])

        #print a
        return_data.append(a)

    return return_data


print(search())