Получить значение по умолчанию для аргумента функции?Python

Программы на Python
Ответить
Anonymous
 Получить значение по умолчанию для аргумента функции?

Сообщение Anonymous »

Для этой функции

Код: Выделить всё

def eat_dog(name, should_digest=True):
print "ate dog named %s. Digested, too? %" % (name, str(should_digest))
Я хочу, чтобы вне функции было прочитано ее аргументы и все прикрепленные значения по умолчанию. Итак, в этом конкретном примере я хочу знать, что name не имеет значения по умолчанию (т. е. является обязательным аргументом) и что True является значением по умолчанию для must_digest.

Мне известен метод Inspect.getargspec(), который предоставляет мне информацию об аргументах и ​​значениях по умолчанию, но я не вижу связи между ними:

Код: Выделить всё

ArgSpec(args=['name', 'should_digest'], varargs=None, keywords=None, defaults=(True,))
Из этих выводов как я могу определить, что True (в кортеже defaults) является значением по умолчанию для must_digest?

Кроме того, я знаю о модели подхода к проблеме «попросить прощения», но, к сожалению, выходные данные этой ошибки не сообщают мне имя недостающего аргумента:

Код: Выделить всё

>>> eat_dog()
Traceback (most recent call last):
File "", line 1, in 
TypeError: eat_dog() takes at least 1 argument (0 given)
Чтобы дать контекст (почему я хочу это сделать), я представляю функции в модуле через API JSON. Если вызывающая сторона пропускает определенные аргументы функции, я хочу вернуть конкретную ошибку, которая называет конкретный аргумент функции, который был опущен. Если клиент опускает аргумент, но в сигнатуре функции указано значение по умолчанию, я хочу использовать это значение по умолчанию.

Подробнее здесь: https://stackoverflow.com/questions/126 ... ault-value
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»