2017-02-08 1 views
0

저는 파이썬을 처음 접했고 다른 사람들의 코드를 배우고 그것을 내 것으로 통합하여 추함에 대한 사과를드립니다.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을 복용합니다. Return에서 변수를 가져 오는 것이거나 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에 값을 할당하는 코드 줄 중 하나에 도달하여이를 실행하면 그 값이 반환됩니다. 그렇지 않은 경우 사용자가 지정한 초기 값 (빈 문자열)을 유지합니다.

두 번째 질문의 경우 lm_add_api를 random.choice(na_collector)에서 다시 가져온 값으로 호출합니다.

파이썬은 다른 명령형 프로그래밍 언어와 마찬가지로 코드가 실행되고 업데이트 된 상태 값을 유지함에 따라 상태가 변경된다는 점에 유의해야합니다. 따라서 변수의 값을 변경할 때마다 업데이트 된 값이 유지됩니다. 같은 코드 :

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

은 단순히 '4'로 인쇄됩니다. 이전 과제는 모두 덮어 씁니다.

관련 문제