При передаче неправильного количества аргументов в функцию Python возникнет исключение TypeError
.
Существует несколько сценариев, когда это может произойти:
Если функция ожидает определенное количество обязательных аргументов, а передано меньше, Python выдаст TypeError
с сообщением, указывающим на то, что не хватает необходимого позиционного аргумента (или нескольких аргументов).
def my_function(a, b):
print(a, b)
my_function(1) # TypeError: my_function() missing 1 required positional argument: 'b'
Если функция не принимает переменное количество аргументов (через *args
или **kwargs
), а передано больше позиционных аргументов, чем объявлено в сигнатуре, Python выдаст TypeError
с сообщением, указывающим на то, что функция принимает только определенное количество позиционных аргументов, но было передано больше.
def my_function(a, b):
print(a, b)
my_function(1, 2, 3) # TypeError: my_function() takes 2 positional arguments but 3 were given
Если при вызове функции используются именованные аргументы, но имя аргумента указано неверно или передано несколько раз, возникнет TypeError
.
def my_function(a, b):
print(a, b)
my_function(a=1, c=2) # TypeError: my_function() got an unexpected keyword argument 'c'
Если функция имеет аргументы по умолчанию, то при вызове функции можно не передавать значения для этих аргументов. Если же передать меньше аргументов, чем требуется, Python также выдаст TypeError
.
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
greet() # TypeError: greet() missing 1 required positional argument: 'name'
greet("Alice") # OK
greet("Bob", "Hi") # OK
Важно обрабатывать TypeError
, возникающие при неверном количестве аргументов, чтобы обеспечить стабильную работу программы. Это можно сделать с помощью обработки исключений (try...except
) или валидации данных перед вызовом функции.