Используя python 2.7, я исследовал использование аргументов ключевых слов для передачи функции, которая вставляет новый кортеж в список.
Моя цель: иметь функцию, которая принимает один обязательный аргумент, и n количество аргументов, которые затем вставляются в кортеж в определенных позициях и имеют значение по умолчанию, если ничего не было передано.
Вот что у меня есть:
def add_tagging_log_row(key, **time_stamp):
tagging_log_rows.insert(len(tagging_log_rows), (key, time_stamp.get('is_processed'), time_stamp.get('is_processed')))
add_tagging_log_row('zzz', is_processed=datetime.datetime.now(), is_audited=datetime.datetime.now())
Вот пример списка tagging_low_rows, который я строю со всеми значениями в заполненном кортеже:
[('key1', datetime.datetime.now(), datetime.datetime.now(), datetime.datetime.now(), datetime.datetime.now()), ('key2', datetime.datetime.now(), datetime.datetime.now(), datetime.datetime.now(), datetime.datetime.now())]
вот порядок элементов в каждом кортеже в списке:
key | is_processed | is_archived | is_error | is_audited
Проблема в том, что при вызове функции add_tagging_log_row () я всегда буду передавать «ключ», но мог бы или не мог бы передать другие поля меток времени кортежу, когда он будет вставлен в список. Мне нужно, чтобы эти поля были пустыми строками ('').
Правильно ли использовать ** kwargs для решения этой проблемы?