Не пойму, почему возникает ошибка "TypeError: 'int' object is not callable"

def highest_palindrom(min = 100, max = 999):
    palindroms = []
    for a in range(min, max + 1):
        for b in range(min, max + 1):
            palindrom = a * b
            palindrom = str(palindrom)
            res = []
            for n in range(len(palindrom) // 2):
                if palindrom[n] == palindrom[-n - 1]:
                    res.append(True)
                else:
                    res.append(False)
            if False not in res: 
                palindrom = int(palindrom)
                palindroms.append(palindrom)
    print(palindroms)
    print('Наибольший палиндром в промежутке', 'от', min ** 2, 'до',
          max ** 2, 'равен', max(palindroms))

Ошибка в 'max(palindroms)'. Вроде, нет каких-то затененных переменных, но никак не могу понять.


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

Автор решения: CrazyElf

Питон не различает, где функция, где обычная переменная, для него все имена имеют единое пространство. Поэтому когда вы что-то присваиваете переменной max, то при последующем вызове встроенной функции max питон про эту функцию уже ничего не знает, на её месте лежит то, что вы присвоили в переменную max, поэтому и возникает такая ошибка. Просто не называйте свои переменные/функции/классы именами встроенных функций/классов питона - и не будет никаких проблем.

max ** 2, 'равен', max(palindroms))
^^^                ^^^

Здесь вы одновременно обращаетесь к max как к числу и как к функции. В Питоне такое не прокатит.

→ Ссылка