2013-07-01 3 views
2

Всякий раз, когда функция Python вызывается с отсутствующими именованных аргументов, он выдает ошибку во время выполнения, которая перечисляет количество недостающих аргументов:Как найти имена недостающих параметров в Python?

TypeError: getVolume() takes exactly 3 arguments (2 given)

Однако, это не сказать мне, какие конкретные аргументы отсутствуют. Это сообщение об ошибке времени выполнения было бы гораздо более информативным, если бы оно фактически печатало имена отсутствующих аргументов, а не просто печатало количество отсутствующих аргументов. Это особенно важно при работе с функциями, принимающими большое количество аргументов: не всегда легко запомнить имя каждого отсутствующего аргумента.

В целом, возможно ли изменить функции Python, чтобы они печатали имена отсутствующих аргументов, когда отсутствуют аргументы?

def getVolume(length, width, height): 
    return length*width*height; 

print(getVolume(height=3, width=3)); 
+1

Да ... но это не тривиально. –

+1

Это изменилось в Python3, вы получили имена отсутствующих аргументов бесплатно. – michaelmeyer

+0

@doukremt Я получаю ту же ошибку в Python 3, которая не перечисляет отсутствующие именованные аргументы: 'TypeError: getVolume() принимает ровно 3 аргумента (2 данных)'. Что ты хочешь этим сказать? –

ответ

1

Это изменилось в Python3.3 (по большей части), вы получаете недостающие имена аргументов бесплатно:

>>> def getVolume(length, width, height): 
...  return length*width*height; 
... 
>>> print(getVolume(height=3, width=3)); 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: getVolume() missing 1 required positional argument: 'length' 
+2

Но как вы получаете программно? –

Смежные вопросы