有没有办法反转返回给变量的布尔值?

81 投票
6 回答
84867 浏览
提问于 2025-04-17 07:26

我有一个Django网站,里面有一个叫做Item的对象,这个对象有一个布尔属性active。我想做一些操作,把这个属性从假(False)切换到真(True),反之亦然:

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

这种写法在很多以C为基础的编程语言中是有效的,但在Python中似乎不行。有没有其他方法可以做到这一点,而不使用:

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

Python自带的neg()方法似乎是用来取整型的相反数,而不是布尔值的相反值。

谢谢大家的帮助。

6 个回答

14

item.active = not item.active 是一种很符合 Python 风格的写法。

17

我觉得你想要的是

item.active = not item.active
161

你可以这样做:

item.active = not item.active

这样就可以解决问题了 :)

撰写回答