2011-04-07 35 views
2
def minmax (actual, min, max): 
    print 'actual', actual, type(actual) 
    print 'min', min, type(min) 
    print 'max', max, type(max) 
    if actual: 
     if min(actual) < min: 
      min = min(actual1) 
     if max(actual) > max: 
      max = max(actual1) 
    return min, max 

我想知道,为什么这段代码产生以下错误? (我使用Python 2.6.1在Mac)蟒蛇分钟()显然不接受整数列表

actual [572, 2, 1] <type 'list'> 
min 0 <type 'int'> 
max 0 <type 'int'> 
Traceback (most recent call last): 
    File "./bin/helixCSV.py", line 706, in <module> 
    main() 
    File "./bin/helixCSV.py", line 695, in main 
    create_final_results(final_result_path, seq_list, hl_fq_list, hl_no_list, strand_dist_list, helix_length_list, linker_occup_list, meta_list, HELIXDEF) 
    File "./bin/helixCSV.py", line 335, in create_final_results 
    result_dict[def_key]['5prime']['dist_min'], result_dict[def_key]['5prime']['dist_max'] = minmax(strand_dist_list[seq_no][def_key]['us'], result_dict[def_key]['5prime']['dist_min'], result_dict[def_key]['5prime']['dist_max']) 
    File "./bin/helixCSV.py", line 299, in minmax 
    if min(actual) < min: 
TypeError: 'int' object is not callable 

干杯 西蒙

回答

10

符号min不能意味着在同一时间两件事情(全球内置的功能和局部变量)。

+1

干杯,队友,这就是我需要解决我的问题。多么愚蠢的错误 – Simon 2011-04-07 13:41:00

+0

这就是为什么haskell存在 – lol 2015-07-13 11:56:09

12

要覆盖min()功能与您的intmin的说法,这就是原因。将它重命名为其他内容。

def minmax (actual, min, max): 
    print 'actual', actual, type(actual) 
    print 'min', min, type(min) 
    print 'max', max, type(max) 
    if actual: 
     if min(actual) < min:  #<- min(actual): python tries calling min(), 
      min = min(actual1)  # min is int, 
     if max(actual) > max:  # -> TypeError: 'int' object is not callable 
      max = max(actual1) 
    return min, max 
+1

+∞发现这个常见的错误。 – 2011-04-07 13:23:54

+0

干杯,队友,多么愚蠢的错误。 – Simon 2011-04-07 13:40:26