我想遍历一个文件并返回每一行:
for i in master_file:
columns = re.split('\s{2,}', i)
last_name = columns[1]
print(last_name)
Run Code Online (Sandbox Code Playgroud)
如果我更换print与return它只会返回columns[1]的第一线,但我想返回它的所有行.所以我可以在我的函数中的其他地方使用该信息.
在这种情况下,您需要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将参数和控制传递回调用上下文,保持被调用上下文的状态,然后从那里恢复.