2017-02-08 9 views
0

私はPythonを初めて使いました。私は他の人のコードを覚えて、それを私の中に組み込んでいますので、醜さに対する私の謝罪です。Return関数、本当に混乱しました

この変数はrandom_collector = ''です。コードが進むにつれて、私はrandom_collectorを空白でない文字列に設定しました。最後に、random_collectorのReturn関数を設定しました。質問は:空の文字列または空でない文字列を返しますか?

def add_csv(): 
    random_collector = '' 
    sitevalue = '' 
    path = raw_input('path to csv file: ') 
    with open(path, 'r') as ifile: 
     reader = csv.reader(ifile) 
     reader.next() 
     for row in reader: 
      deviceip = row[1] 
      displayname = row[0] 
      snmpc = row[2] 
      alert_priority = row[3] 
      monitoring_templates = row[4] 
      pd_alert_service = row[5] 
      site_code = row[6] 
      team_owner = row[7] 
      if displayname_pattern.match(displayname): 
       cut_displayname = displayname[0:4] 
       print cut_displayname 
       if cut_displayname in site: 
        sitevalue = site.get(cut_displayname) 
        cut_office = cut_displayname[0:3] 
        if cut_office in na_office: 
         random_collector = random.choice(na_collector) 
         lm_add_api(deviceip, displayname, random_collector, sitevalue, snmpc, alert_priority, monitoring_templates, pd_alert_service, site_code, team_owner) 
         time.sleep(5) 
        elif cut_office in apac_office: 
         random_collector = random.choice(apac_office) 
         lm_add_api(deviceip, displayname, random_collector, sitevalue, snmpc, alert_priority, monitoring_templates, pd_alert_service, site_code, team_owner) 
        elif cut_office in emea_office: 
         random_collector = random.choice(emea_office) 
         lm_add_api(deviceip, displayname, random_collector, sitevalue, snmpc) 
       else: 
        print 'Site format is not a recongnized' 
        time.sleep(2) 
        add() 
      else: 
       print 'Double check the site code, device group not found in Logic Monitor' 
       time.sleep(2) 
       add() 

    return deviceip, displayname, random_collector, sitevalue, snmpc, alert_priority, monitoring_templates, pd_alert_service, site_code, team_owner 

このコードブロックで私の混乱の第二部では、私はlm_add_api(deviceip, displayname, random_collector, sitevalue, snmpc, alert_priority, monitoring_templates, pd_alert_service, site_code, team_owner)と呼ばれる別の関数を呼び出すことだし、それが変数random_collectorを取っています。変数から戻り値を取っているのですか、結果はrandom_collector = random.choice(na_collector)ですか?

if cut_office in na_office: 
         random_collector = random.choice(na_collector) 
         lm_add_api(deviceip, displayname, random_collector, sitevalue, snmpc, alert_priority, monitoring_templates, pd_alert_service, site_code, team_owner) 
+5

あなたが返すものを知りたいのであれば、それを実行して見ないのはなぜですか? –

答えて

1

返されるrandom_collectorの値は、返された時点でその変数に格納されている値になります。コードがrandom_collectorに値を割り当てるコード行の1つに到達してそれを実行すると、それが戻り値になります。そうでない場合は、それが与えた初期値(空の文字列)を保持します。

2番目の質問では、random.choice(na_collector)から返された値でlm_add_apiを呼び出しています。

Pythonは他の命令型プログラミング言語と同様に、コードの実行時に状態が変更され、更新された状態値が維持されることに注意することが重要です。したがって、変数の値を変更するたびに、更新された値が保持されます。コードは次のようになります。

x = 1 
x = 2 
x = 3 
x = 4 
print x 

は単に「4」と表示されます。以前の割り当てはすべて上書きされます。

関連する問題