← Все вопросы

TypeError: 'list' object is not callable — почему список вдруг «вызывается»?

Задан 7 месяцев назад1.4к просмотров1 ответ
8

Хочу взять элемент списка, пишу nums(0), а получаю TypeError: 'list' object is not callable. Или вызываю list() и тоже ошибка. Что значит «not callable» и из-за чего это происходит?

1 ответ

11
✓ Принятый ответ — помог автору

«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, чтобы вернуть встроенную функцию.

Ваш ответ

, чтобы ответить на вопрос.