2016-06-12 14 views
-2

我有這個功能,試圖循環在一定範圍長度列表以獲得ASCII字母:的Python:「名單」對象不是可調用

def query_execute (self,query, range): 

    list_titles = [] 
    list_colunmns_letters = [] 
    cursor.execute(query, range) 
    description = cursor.description 
    row = cursor.fetchall() 
    number_columns = len(description) 

    for word in description: 
     list_titles.append(word[0]) 

    for m in range (0,number_columns): 
     list_colunmns_letters.append(string.ascii_uppercase[m]) 

    return row,list_titles,list_colunmns_letters 

它給了我一個錯誤:

for m in range (0,number_columns):
TypeError: 'list' object is not callable

由於number_columns變量是一個整數,我不知道爲什麼這個錯誤發生,我沒有調用列表。

+0

更換了'range'內建有一個列表,通過使用'range'作爲參數傳遞給函數。 –

+0

實際上,我調用此函數與其他範圍:範圍中對於i(0,5): 行= sql_queries.query_execute(sql_queries.query_test,[I])[0]() –

+1

所以?你不需要命名你傳入的列表(帶'[i]')'範圍'。 –

回答

1

您使用range本地名稱由它的參數讓你的函數:

def query_execute (self,query, range): 
#        ^^^^^ 

不能再使用全球內置的名稱爲好。將參數重命名爲別的東西;我用params代替:

def query_execute (self, query, params): 
    list_titles = [] 
    list_colunmns_letters = [] 
    cursor.execute(query, range) 
    description = cursor.description 
    row = cursor.fetchall() 
    number_columns = len(description) 

    for word in description: 
     list_titles.append(word[0]) 

    for m in range(0, number_columns): 
     list_colunmns_letters.append(string.ascii_uppercase[m]) 

    return row, list_titles, list_colunmns_letters 
相關問題