variable valores relacionales operadores operaciones not logicas funcion exclusivo ejemplos declarar booleanos booleana binarias python django

python - valores - ¿Hay una manera de negar un booleano devuelto a la variable?



valores booleanos y operaciones logicas (6)

Tengo un sitio de Django, con un objeto Item que tiene una propiedad booleana active . Me gustaría hacer algo como esto para cambiar la propiedad de Falso a Verdadero y viceversa:

def toggle_active(item_id): item = Item.objects.get(id=item_id) item.active = !item.active item.save()

Esta sintaxis es válida en muchos lenguajes basados ​​en C, pero parece no ser válida en Python. ¿Hay otra manera de hacer esto SIN usar:

if item.active: item.active = False else: item.active = True item.save()

El método nativo de python neg() parece devolver la negación de un entero, no la negación de un booleano.

Gracias por la ayuda.


Creo que quieres

item.active = not item.active


Es simple de hacer:

item.active = not item.active

Entonces, finalmente terminarás con:

def toggleActive(item_id): item = Item.objects.get(id=item_id) item.active = not item.active item.save()


La negación para los booleanos not es.

def toggle_active(item_id): item = Item.objects.get(id=item_id) item.active = not item.active item.save()

Gracias chicos, ¡fue una respuesta rápida!


Otra forma (menos concisa de leer, más aritmética) de hacerlo sería:

item.active = bool(1 - item.active)


Puedes hacerlo:

item.active = not item.active

Eso debería hacer el truco :)


item.active = not item.active es la forma pythonic