← Все вопросы

TypeError: missing 1 required positional argument — почему не хватает аргумента?

Задан 4 месяца назад1.4к просмотров1 ответ
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("Аня")

Частые причины:

  1. Просто забыли аргумент при вызове.
  2. Метод класса вызвали неправильно — например, через имя класса без объекта, и self остался без значения: Dog.bark() вместо my_dog.bark().
  3. Аргументов несколько, а передали меньше: add(2) для def add(a, b).

Если хотите, чтобы параметр был необязательным, задайте ему значение по умолчанию:

def greet(name="друг"):
    print("Привет,", name)

greet()          # Привет, друг
greet("Аня")    # Привет, Аня

Бывает и обратное: TypeError: takes 1 positional argument but 2 were given — значит передали лишний аргумент (часто из-за того же self в методах). Сверьте число параметров в def и число значений в вызове.

Ваш ответ

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