То, что вы пытаетесь написать здесь, не имеет смысла:
def new_q(question_text = '', offset=timedelta(**kwargs)):
Это создает значение по умолчанию для offset
, и это значение создается путем вызова timedelta(**kwargs)
того, что происходит в kwargs
во время определения функции. (Что, вероятно, вообще ничего, так что вы получите NameError
.)
То, что вы хотите, выглядит примерно так:
def new_q(question_text = '', offset=None, **kwargs):
if offset is None:
offset = timedelta(**kwargs)
Теперь вы вызываете timedelta
, когда вызывается функция, а не когда она определена, и используете значение kwargs
, переданное в функцию, а не любое значение, которое эта переменная имеет во время определения функции.
Конечно, вы можете добавить некоторую обработку ошибок, поэтому TypeError
, который вы получаете для неизвестного ключевого аргумента, упоминает new_q
вместо timedelta
, и поэтому указывать offset
и minutes
- ошибка и т. д.
Кроме того, если кто-то не передает ни offset
, ни каких-либо других аргументов ключевого слова, это создаст timedelta()
- что является пустым timedelta
(0 секунд). Это то, что вы хотите?