2016-06-12 3 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): row = sql_queries.query_execute (sql_queries.query_test, [i]) [0]() –

+1

Итак? Вам не нужно указывать список, в который вы проходите (с '[i]') 'range'. –

ответ

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 
Смежные вопросы