检查空字符串时,"== False"和"is not"之间是否有区别?

pat*_*ork 2 python boolean-expression

我已经在stackoverflow的其他地方读过,在Python中检查空字符串的最优雅方法是(例如,假设它是一个被调用的字符串response):

if not response:
    # do some stuff 
Run Code Online (Sandbox Code Playgroud)

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

所以我的问题是,下面的代码是否说同样的事情?

if response == False:
    # do some stuff
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 6

有区别吗?是的:一个有效,另一个没有.

if response == False是,如果实际值唯一真正responseFalse.对于空字符串,情况并非如此.

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