我有一个函数get_arcs():
for i in rng:
if not lines[i].startswith('[') and 'echo $ORACLE_SID' in lines[i].strip():
sid = lines[i + 2]
yield sid
if lines[i].strip().find('SELECT') == 0:
res = lines[i:]
for i in res:
print >> f, i.strip()
yield i.strip()
应该:
问题在于调用get_arcs()时:
for line in get_arcs():
if len(line.split()) == 13:
lst.append(int(line.split()[-5]))
print sum(lst), 'Bytes'
它确实按预期返回总和(lst),但是如何检索 sid 值,因为我无法在函数外的任何地方调用它。
答案 0 :(得分:1)
那么,你需要这个函数来返回i.strip()
和sid
吗?当你尝试从单个函数返回两个值时,我总觉得它有代码味道。但如果在这种情况下确实有必要,我会返回一个元组。
yield i.strip(), sid
随后:
for (line, sid) in get_arcs():
# both line and sid are defined here