2017-02-08 5 views
0

Ich bin neu bei Python und ich lerne ziemlich viel Code anderer Leute und es in meine so meine Entschuldigung für die Hässlichkeit.Return-Funktion, wirklich verwirrt

Ich habe diese Variable random_collector = ''. Als der Code weitergeht habe ich random_collector auf eine nicht leere Zeichenfolge festgelegt. Ganz am Ende habe ich eine Return-Funktion für random_collector gesetzt. Die Frage ist: wird es eine leere Zeichenfolge oder eine nicht leere Zeichenfolge zurückgeben?

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 

Der zweite Teil meiner Verwirrung in diesem Code-Block ist Ich rufe eine andere Funktion namens lm_add_api(deviceip, displayname, random_collector, sitevalue, snmpc, alert_priority, monitoring_templates, pd_alert_service, site_code, team_owner) und es wird die Variable random_collector nehmen. Nimmt es die Variable von der Rückkehr oder das Ergebnis von random_collector = random.choice(na_collector)?

+5

Wenn Sie wissen wollen, was es zurückgibt, warum führen Sie es nicht und sehen? –

Antwort

1

Der zurückgegebene Wert für random_collector ist der Wert, der zum Zeitpunkt der Rückgabe in dieser Variablen gespeichert wird. Wenn der Code eine der Codezeilen erreicht und ausführt, die random_collector einen Wert zuweisen, ist dies der zurückgegebene Wert. Wenn nicht, behält es den Anfangswert bei, den Sie ihm gegeben haben (leere Zeichenfolge).

Für die zweite Frage rufen Sie lm_add_api mit dem Wert auf, den Sie von random.choice(na_collector) zurückbekommen.

Es ist wichtig zu beachten, dass Python, wie auch andere imperative Programmiersprachen, den Zustand ändert, während der Code ausgeführt wird und die aktualisierten Statuswerte beibehält. Wenn Sie also den Wert einer Variablen ändern, behält sie diesen aktualisierten Wert bei. Code wie:

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

wird einfach '4' drucken. Alle diese früheren Zuweisungen werden überschrieben.