退出for循环并在文件末尾返回

Cha*_*ith 2 python for-loop

我想遍历一个文件并返回每一行:

for i in master_file:
        columns = re.split('\s{2,}', i)
        last_name = columns[1]
        print(last_name)
Run Code Online (Sandbox Code Playgroud)

如果我更换printreturn它只会返回columns[1]的第一线,但我想返回它的所有行.所以我可以在我的函数中的其他地方使用该信息.

Hyp*_*eus 9

在这种情况下,您需要yield值而不是return它:

for i in master_file:
        columns = re.split('\s{2,}', i)
        last_name = columns[1]
        yield last_name
Run Code Online (Sandbox Code Playgroud)

完整样本:

def readLastNames ():
    for i in master_file:
            columns = re.split('\s{2,}', i)
            last_name = columns[1]
            yield last_name

for last_name in readLastNames ():
    print (last_name)
Run Code Online (Sandbox Code Playgroud)

非常粗略的解释:yield将参数和控制传递回调用上下文,保持被调用上下文的状态,然后从那里恢复.