从字符串解释布尔值,意外的行为

2024-04-29 14:59:12 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能用Python(2.7和3)解释这种行为吗

>>> a = "Monday" and "tuesday"
>>> a
'tuesday'             # I expected this to be True
>>> a == True
False                 # I expected this to be True
>>> a is True
False                 # I expected this to be True
>>> a = "Monday" or "tuesday"
>>> a
'Monday'              # I expected this to be True
>>> a == True
False                 # I expected this to be True
>>> a is True
False                 # I expected this to be True

我希望,因为我使用的是逻辑运算符andor,所以语句的计算结果将是a = bool("Monday") and bool("tuesday")。你知道吗

那么这里发生了什么?你知道吗


Tags: orandtofalsetrueis运算符语句
1条回答
网友
1楼 · 发布于 2024-04-29 14:59:12

正如所解释的,对字符串使用and / or将产生以下结果:

  • a or b如果a为真,则返回a,否则返回b
  • a and b如果a为真,则返回b,否则返回a

这种行为称为Short-circuit_evaluation,它同时适用于and, or,如here所示。

这就解释了为什么a == 'tuesday'1st情况下,而'Monday'2nd情况下。你知道吗

至于检查a == Truea is True,对字符串使用逻辑运算符会产生一个特定的结果(如上所述),它与bool("some_string")不同。你知道吗

相关问题 更多 >