Ти хочеш
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
, що має значення або ключ, не існує, це може бути корисно.