Выдает конкретное сообщение об ошибке, если количество аргументов, переданных в вызове функции, не совпадает с количеством аргументов в ее определении? - PullRequest
1 голос
/ 19 апреля 2019

Предположим, у меня есть функция только с одним определением в Python

def foo(x, y, z):
    return x + y + z

, а потом я вызываю эту функцию так:

foo(20, 30)

Конечно, Python по умолчанию выдает ошибку относительно количества аргументов. Но есть ли способ настроить это сообщение об ошибке?

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Вы можете установить значения по умолчанию для параметров None или другое значение, которое будет неверным вводом:

def foo(x=None, y=None, z=None):
    for param_value in (x, y, z):
        if param_value is None:
            raise ValueError("Need to provide foo, bar and baz values")
0 голосов
/ 19 апреля 2019

Может быть другой, лучший подход, но одно решение - позволить вашей функции принимать любое количество аргументов, а затем проверять количество аргументов, переданных при вызове функции:

def foo(*args):
    if len(args) != 3:
        raise TypeError("Custom error!")
    return sum(args)

foo(1, 2, 3)
# 6
foo(1, 2)
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
#   File "<stdin>", line 3, in foo
# TypeError: Custom error!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...