2017-03-24 1 views
0

呼び出された後関数の変数割り当てが)私は(機能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. に特定の値を割り当てます
  3. fファイルと内容を変更
  4. i.strip()出力を別の楽しみに渡すctionと特定のオブジェクトの合計が

に計算される問題は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

したがって、i.strip()sidの両方を返すにはこの関数が必要ですか?私は、あなたが1つの関数から2つの値を返そうとするときに、常にコードの匂いがあると感じます。しかし、この場合に本当に必要な場合は、タプルを返します。

yield i.strip(), sid 

以降:

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

はい、これはうまく働きました。どうもありがとう! P.S.はい、私はparamiko ssh接続が確立されるので、2つの値を返すために1つの関数が必要です。 – feedthemachine

+0

もちろん、すべてのルールに例外があります。これらのケースでは、常にダブルチェックの価値があります。 ;) – Nathan

関連する問題