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