Ошибка TypeError: 'int' object is not callable

Пытался написать сортировку списка с использованием рекурсии, начала вылезать ошибка TypeError: 'int' object is not callable после добавления рекурсии функции(до этого для тестов использовал списки из трех элементов - рекурсия была не нужна).

def a(mas):
    menshe = []
    bolshe = []
    sorted = []
    if len(mas) <= 2:
        return mas
    else:
        a = int(len(mas) // 2)
        vibor = mas[a]
        del mas[a]
        if len(mas) == 2:
            for i in mas:
                if i < vibor:
                    menshe.append(i)
                else:
                    bolshe.append(i)
            sorted.append(menshe)
            sorted.append(vibor)
            sorted.append(bolshe)
            print(sorted)
        else:
            a(mas)

Сорри за говно код, только учусь)


Ответы (1 шт):

Автор решения: Dmytro Hoi

Функция названа также, как и внутренняя переменная.

Таким образом, когда в последней строке вы "вызываете" a(mas) для программы в этот момент a уже переназначено и там число (из строки a = int(len(mas) // 2)).

Для того чтобы такие ошибки не возникали, пожалуйста прочитайте соглашения по форматированию кода и не используйте короткие a, b, i, j, k и прочие названия, а используйте осмысленные имена переменных и функций. Для функций обычно используют глагол или описание действия.

→ Ссылка