关于python:检查空字符串时,“== False”和“is not”之间是否有区别?

Is there a difference between “== False” and “is not” when checking for an empty string?

我在StackOverflow上的其他地方读到,在python中检查空字符串(例如,假设它是一个名为response的字符串)的最优雅的方法是:

1
2
if not response:
    # do some stuff

原因是字符串可以计算为布尔对象。

所以我的问题是,下面的代码说的是同一件事吗?

1
2
if response == False:
    # do some stuff


有什么区别吗?是的:一个有效,另一个无效。

只有当response的实际值为False时,if response == False才为真。对于空字符串,情况并非如此。

另一方面,if not response验证response是否是假的;也就是说,它是Python在布尔上下文中接受为假的值之一,包括none、false、空字符串、空列表等等。相当于if bool(response) == False


如前所述,这是有区别的。

not response检查是否为bool(response) == False或不检查是否为len(response) == 0则最好检查是否为空,None0False。请参阅python文档,了解什么是"falsy"。

另一种变体只检查response == False是否存在,只有当且仅当response is False时才存在这种情况。但是一个空字符串is not False