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