2017-05-06 6 views
-2

저는 파이썬 목록이 2 개 있고 다른 함수 (TP, TN, FP, FN)를 사용하여 4 개의 다른 값을 계산하려고합니다. 매개 변수로 각각의 모든 함수에 대한 매개 변수를 정의하지 않고 외부 중첩 함수에서 매개 변수를 정의 할 수 있다면 4 개의 모든 함수에 대해 동일합니다. 함수를 구현했지만 TP 함수 출력 만 제공합니다. 당신이 누군가가 나를 여기 문제 나는이 기능들하지만 당신의 코드를 수정을 위해 매개 변수를 공유 할 수있는 가장 좋은 방법이 아니다 '라고해야동일한 매개 변수에 대한 Python 중첩 함수

def evaluation(list1,list2): 


    def TP(): 

     count1 = 0 
     for i in range(0,35): 

      if Jac_test_list[i].strip()==Simmilar_list[i].strip()=='True': 
       count1+=1 
    #return count 

     print ('TP count :' + str(count1)) 

    return TP 

    def TN(): 
     count2 = 0 
     for i in range(0,35): 

      if Jac_test_list[i].strip()==Simmilar_list[i].strip()=='False': 
       count2+=1 
    #return count 

     print ('TN count :' + str(count2)) 
    return TN 

    def FP(): 
     count3 = 0 
     for i in range(0,35): 

      if (Jac_test_list[i].strip()=='True') & (Simmilar_list[i].strip()=='False'): 
       count3+=1 
    #return count 

     print ('FP count :' + str(count3)) 
    return FP 

    def FN(): 
     count4 = 0 
     for i in range(0,35): 

      if (Jac_test_list[i].strip()=='False') & (Simmilar_list[i].strip()=='True'): 
       count4+=1 
    #return count 

     print ('FN count :' + str(count4)) 
    return FN 
+2

힌트 :'return'은 함수를 종료합니다. 당신의 첫번째'반환 TP'가 실행 된 후에 아무것도. – BrenBarn

+0

평가 (list1, list2)를 호출 할 때 무엇을 기대합니까? 예를 들어 줄 수 있습니까? – Allen

+0

왜 여기에 중첩 함수를 사용하고 있습니까? 이것이 함수 팩토리가 될까요? 그런데, 당신은'Jac_test_list'와'Simmilar_list'에 클로저를 만들고 있습니다. –

답변

0

을 찾아 도와주세요 수, 아래 당신이 후에 어떤 수 있습니다 .

def evaluation(Jac_test_list,Simmilar_list): 

    def TP(): 
     count1 = 0 
     for i in range(0,35): 
      if Jac_test_list[i].strip()==Simmilar_list[i].strip()=='True': 
       count1+=1 
    #return count 
     print ('TP count :' + str(count1)) 


    def TN(): 
     count2 = 0 
     for i in range(0,35): 
      if Jac_test_list[i].strip()==Simmilar_list[i].strip()=='False': 
       count2+=1 
    #return count 
     print ('TN count :' + str(count2)) 


    def FP(): 
     count3 = 0 
     for i in range(0,35): 

      if (Jac_test_list[i].strip()=='True') & (Simmilar_list[i].strip()=='False'): 
       count3+=1 
    #return count 
     print ('FP count :' + str(count3)) 


    def FN(): 
     count4 = 0 
     for i in range(0,35): 
      if (Jac_test_list[i].strip()=='False') & (Simmilar_list[i].strip()=='True'): 
       count4+=1 
    #return count 
     print ('FN count :' + str(count4)) 

    TP() 
    TN() 
    FP() 
    FN() 
+0

대단히 고맙습니다. 마음에 들지 않으면이 사건에 대한 매개 변수를 공유하는 가장 좋은 방법을 말해 줄 수 있습니까? –