调用函数后,函数中的变量赋值不会 return

Variable assignment in function doesn't return it after the function is called

我有一个函数 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()

应该:

  1. 给变量sid赋值
  2. 将不同的内容写入 f 文件
  3. i.strip()的生成器作为输出传递给另一个函数,计算某些对象的总和

问题出在调用 get_arcs() 时:

for line in get_arcs():
    if len(line.split()) == 13:
        lst.append(int(line.split()[-5]))
print sum(lst), 'Bytes'

它按预期执行 return sum(lst),但我如何才能检索我的 sid 值,因为我无法在函数外的任何地方调用它。

那么,您需要此功能才能 return 同时 i.strip()sid?当您尝试从单个函数 return 两个值时,我总是觉得它有代码味道。但如果在这种情况下真的有必要,我会 return 一个元组。

yield i.strip(), sid

以后:

for (line, sid) in get_arcs():
    # both line and sid are defined here