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则最好检查是否为空,None、0或False。请参阅python文档,了解什么是"falsy"。
另一种变体只检查response == False是否存在,只有当且仅当response is False时才存在这种情况。但是一个空字符串is not False!