如何在python中返回命令后继续?

时间:2011-10-25 10:02:34

标签: python

想象一下,我们有一段代码可以将大数据切割成更小的数据并对其进行一些处理。

def node_cut(input_file):
    NODE_LENGTH = 500
    count_output = 0
    node_list=[]

    for line in input_file.readlines():
        if len(node_list) >= NODE_LENGTH :
            count_output += 1   
            return( node_list,count_output )
            node_list=[]  

        node,t=line.split(',')
        node_list.append(node) 

if __name__ =='__main__':

    input_data = open('all_nodes.txt','r')
    node_list, count_output = node_cut(input_data)
    some_process(node_list)

当node_cut返回第一个数据列表时,for循环停止继续执行其余的大数据。我如何确保它返回但仍然循环继续?

2 个答案:

答案 0 :(得分:3)

使用yield代替return。有关其工作原理,请参阅this questionthis (somewhat old) article

答案 1 :(得分:3)

使用yield

def node_cut(input_file):
    NODE_LENGTH = 500
    count_output = 0
    node_list=[]

    for line in input_file.readlines():
        if len(node_list) >= NODE_LENGTH :
            count_output += 1   
            yield( node_list,count_output )
            node_list=[]  

        node,t=line.split(',')
        node_list.append(node) 

if __name__ =='__main__':
    with open('all_nodes.txt','r') as input_data:
      for node_list, count_output in node_cut(input_data):
        some_process(node_list)