TypeError: 'list' object is not callable — почему список вдруг «вызывается»?
Хочу взять элемент списка, пишу nums(0), а получаю TypeError: 'list' object is not callable. Или вызываю list() и тоже ошибка. Что значит «not callable» и из-за чего это происходит?
1 ответ
«Callable» — это «то, что можно вызвать как функцию через круглые скобки ()». Ошибка 'list' object is not callable значит: вы поставили круглые скобки после списка, как будто это функция, а список вызвать нельзя.
Причина 1 — перепутали скобки. К элементу списка обращаются квадратными скобками, а не круглыми:
nums = [10, 20, 30]
print(nums(0)) # TypeError: 'list' object is not callable
print(nums[0]) # правильно: 10
Причина 2 (очень частая) — переменную назвали как встроенную функцию и затёрли её. Например, переменная list перекрывает функцию list():
list = [1, 2, 3]
x = list(range(5)) # TypeError: 'list' object is not callable
Теперь имя list указывает на ваш список, а не на функцию. Решение — переименуйте переменную:
my_list = [1, 2, 3]
x = list(range(5)) # снова работает
То же бывает с именами str, int, dict, sum, print — не используйте их как имена переменных. Если такое уже случилось в интерактивной сессии, перезапустите её или вызовите del list, чтобы вернуть встроенную функцию.