您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python的in(__contains__)运算符返回布尔值,该布尔值既不是True也不是False

Python的in(__contains__)运算符返回布尔值,该布尔值既不是True也不是False

您正在遇到比较运算符链接1 in () == False也 意思(1 in ()) == False

相反,比较是链接在一起的,该表达式的真正含义是:

(1 in ()) and (() == False)

因为(1 in ())已经为false,所以False and something_else将完全忽略链接表达式的后半部分(因为返回False的值something_else将是)。

请参阅比较表达式文档

可以任意链接比较,例如x < y <= z与等效x < y and y <= z,不同之处在于y比较仅被评估一次(但在两种情况下zx < y被发现为假,则根本不评估)。

对于记录,<>==>=<=!=isis notinnot in都是比较运算符(如本弃用<>)。

通常,不要将其与布尔值进行比较;只是测试表达式本身。如果 必须 对布尔文字进行测试,则至少要使用括号和is运算符,True并且False它们是单例的,就像None

>>> (1 in ()) is False
True

当涉及整数时,这仍然变得更加令人困惑。Python的bool类型是子类int1。因此,False == 0确实如此True == 1。因此,可以想象到,您可以创建看起来理智的链接操作:

3 > 1 == True

是正确的,因为3 > 11 == True都正确。但是表达式:

3 > 2 == True

错误的,因为2 == True错误的。

1是出于历史原因的子类;Python并不总是像C那样具有类型和具有布尔含义的重载整数。制作子类可使较旧的代码正常工作。bool``int``bool``bool

python 2022/1/1 18:39:58 有306人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶