Python:return语句不起作用

Python:return语句不起作用,python,function,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 re

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

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语句而不是print语句

这是由于缩进问题导致您的
return
语句无法工作。 在
搜索中放入
for
循环

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)


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


而且你的缩进非常。。。有趣。我不确定这是否与您如何复制代码有关,或者这是否是您的代码的实际外观,但是我可以想象前者,否则它将永远不会运行。你可以编辑这个问题来纠正这个问题吗?

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

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())

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

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())

在Python中,缩进是语法的一部分。请正确设置代码格式。Return结束方法并在第一次迭代时返回
a
的值。看一看。另外,您可能不希望
return
在其中,而是希望
yield
代替
print
,您可以在
for
循环结束后追加一个列表并返回该列表。我尝试过了,它不起作用。它不打印anything@dipit检查更新的代码。您需要在某个变量中捕获return语句,然后打印它。它将只返回第一行。相反,将返回数据存储在列表中,并在循环结束后返回该列表。这仍然不起作用,在调用return之后,循环将结束,因此您只能从jsondata['rows']@AshwaniDausodia生成的可能多个结果中得到一个结果,然后生成器将提供帮助。我更新了。
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())