函数中的变量赋值在调用函数后不会返回它

时间:2017-03-24 08:31:58

标签: python function variable-assignment

我有一个函数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-file
  3. i.strip()的生成器作为输出传递给另一个函数,并计算某些对象的总和
  4. 问题在于调用get_arcs()时:

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

    它确实按预期返回总和(lst),但是如何检索 sid 值,因为我无法在函数外的任何地方调用它。

1 个答案:

答案 0 :(得分:1)

那么,你需要这个函数来返回i.strip()sid吗?当你尝试从单个函数返回两个值时,我总觉得它有代码味道。但如果在这种情况下确实有必要,我会返回一个元组。

yield i.strip(), sid

随后:

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