Bom, eu faria assim:
def check(value):
return value % 2 != 0
Pois segundo a documentação, os operadores de comparação já retornam um booleano:
Comparisons yield boolean values:
True
orFalse
.
Então não há a menor necessidade de ficar fazendo malabarismos para obter os valores True
e False
, pois já é garantido que a comparação irá retornar sempre um deles.
Eu não achei a última solução "genial". Pra mim é só uma complicação desnecessária (pois como já disse, existem operadores que retornam os valores desejados, não precisa dar essa volta toda).
Eu vejo isso mais como uma curiosidade, uma forma diferente e inusitada, porém nada prática de usar os recursos da linguagem (e que eu jamais usaria em produção). Se o objetivo era ser mais "criativo", tudo bem, mas se a ideia era ter a solução mais simples, então eu prefiro a minha :-)