调用函数后,函数中的变量赋值不会 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()
应该:
- 给变量sid赋值
- 将不同的内容写入 f 文件
- 将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
我有一个函数 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()
应该:
- 给变量sid赋值
- 将不同的内容写入 f 文件
- 将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