Você quer
if 'errormessage' in kwargs:
print("found it")
Para obter o valor de errormessage
if 'errormessage' in kwargs:
print("errormessage equals " + kwargs.get("errormessage"))
Dessa forma, kwargsé apenas mais uma dict. Seu primeiro exemplo if kwargs['errormessage'],, significa "obter o valor associado à chave" mensagem de erro "em kwargs e, em seguida, verificar seu valor bool". Portanto, se essa chave não existir, você receberá um KeyError.
Seu segundo exemplo if errormessage in kwargs:,, significa "se kwargscontém o elemento nomeado por" errormessage"e, a menos que" errormessage"seja o nome de uma variável, você obterá um NameError.
Devo mencionar que os dicionários também têm um método .get()que aceita um parâmetro padrão (ele próprio assumindo o padrão None), de modo que kwargs.get("errormessage")retorna o valor se essa chave existir e de Noneoutra forma (da mesma forma kwargs.get("errormessage", 17)que você pode pensar que faz). Quando você não se importa com a diferença entre a chave existente e tendo Nonecomo valor ou a chave não existente, isso pode ser útil.