如果变量等于False

85

在Python中,您可以按照以下方式编写if语句:

var = True
if var:
    print 'I\'m here'

有没有不用==的方法来进行相反的操作,例如

var = False
if !var:
    print 'learnt stuff'
5个回答

167

使用 not

var = False
if not var:
    print 'learnt stuff'

15
你如何区分 False 和 None?False 表示一个布尔值的假,通常用于表示某些条件不成立。而 None 表示一个空值或不存在的对象。在 Python 中,它们是两个不同的数据类型,可以使用 type() 函数来确定变量的数据类型。 - AlxVallejo
4
@AlxVallejo在这里提出了一个很好的观点!那值得回答:https://dev59.com/xmQn5IYBdhLWcg3w36M1#50978588。感谢您的建议。 - colidyre
1
我在搜索时发现了Stack Overflow,Python很有趣,但我不明白为什么人们这么喜欢它。 - user889030

71

由于Python在检查时将数据类型NoneType也视为False,因此更精确的答案是:

var = False
if var is False:
    print('learnt stuff')

这可以防止潜在的不必要行为,例如:

var = []  # or None
if not var:
    print('learnt stuff') # is printed what may or may not be wanted

但是如果您想检查所有情况,其中var将被评估为False,那么使用逻辑关键字not进行检查是正确的做法。


1
我更喜欢这个,因为“显式优于隐式”。 - aaronsstack

29

Python使用not而不是!进行取反操作。

试试:

if not var: 
    print "learnt stuff"

取而代之


3
var = False
if not var: print 'learnt stuff'

2
为什么所有这些答案都有相同的示例代码,即使原始问题实际上并没有将“if”和“print”放在同一行? - Blender
@Blender:第一个版本的问题格式混乱,导致每个代码片段都出现在单独的一行。 - jwodder
@Blender:当我查看修订历史时,由于格式错误,很难确定宽限期内的“原始”代码是否为一行代码。 - DSM

0

8
那个网站的文档很糟糕。 - Blender

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接