2017-05-06 70 views
-2

我有2个Python列表,我想用不同的函数(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

非常感谢,这工作。如果你不介意,你能否告诉我为这种事件共享参数的最佳方式 –