Ти хочеш
if 'errormessage' in kwargs:
print("found it")
Щоб отримати значення errormessage
if 'errormessage' in kwargs:
print("errormessage equals " + kwargs.get("errormessage"))
Таким чином, kwargsце просто інше dict. Ваш перший приклад, if kwargs['errormessage']означає "отримати значення, пов'язане з ключем" повідомлення про помилки "в kwargs, а потім перевірити його значення bool". Тож якщо немає такого ключа, ви отримаєте KeyError.
Ваш другий приклад, if errormessage in kwargs:означає "якщо kwargsмістить елемент, названий" errormessage", і якщо" errormessage"не є ім'ям змінної, ви отримаєте NameError.
Я мушу зазначити, що в словниках також є метод, .get()який приймає параметр за замовчуванням (сам за замовчуванням None), так що kwargs.get("errormessage")повертає значення, якщо цей ключ існує, і в Noneіншому випадку (аналогічно тому kwargs.get("errormessage", 17), що ви думаєте, що він робить). Якщо вам не байдужа різниця між наявним ключем і тим None, що має значення або ключ, не існує, це може бути корисно.