← Все вопросы
TypeError: missing 1 required positional argument — почему не хватает аргумента?
8
Вызываю свою функцию, а Python пишет TypeError: greet() missing 1 required positional argument: 'name'. Я же передал значение! Что значит «missing positional argument» и как правильно вызвать функцию?
1 ответ
11
✓ Принятый ответ — помог автору
Эта ошибка значит: функция объявлена с параметром, а при вызове вы его не передали. Python даже подсказывает имя пропущенного параметра ('name').
Ошибка:
def greet(name):
print("Привет,", name)
greet() # TypeError: missing 1 required positional argument: 'name'
Исправление — передать аргумент:
greet("Аня")
Частые причины:
- Просто забыли аргумент при вызове.
- Метод класса вызвали неправильно — например, через имя класса без объекта, и
selfостался без значения:Dog.bark()вместоmy_dog.bark(). - Аргументов несколько, а передали меньше:
add(2)дляdef add(a, b).
Если хотите, чтобы параметр был необязательным, задайте ему значение по умолчанию:
def greet(name="друг"):
print("Привет,", name)
greet() # Привет, друг
greet("Аня") # Привет, Аня
Бывает и обратное: TypeError: takes 1 positional argument but 2 were given — значит передали лишний аргумент (часто из-за того же self в методах). Сверьте число параметров в def и число значений в вызове.
Ваш ответ
, чтобы ответить на вопрос.