Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字符串解释布尔值,意外行为_Python - Fatal编程技术网

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

Python 从字符串解释布尔值,意外行为,python,Python,有人能在Python2.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 #

有人能在Python2.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
我希望,因为我使用的是逻辑运算符and和or,所以这些语句将被计算为a=boolMonday和booltuesday

那么这里发生了什么呢?

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

如果a为真,则a或b返回a,否则返回b。 如果a为真,则a和b返回b,否则返回a。 此行为被调用,并且它同时适用于和,或者可以看到

这就解释了为什么在第一种情况下a=='星期二',在第二种情况下a='星期一'


至于检查a==True,a为True,在字符串上使用逻辑运算符会产生如上所述的特定结果,这与boolsome_字符串不同。

这可能有助于您避免and和or运算符的重复返回布尔对象,他们返回的任何一个参数都可能是@juanpa.arrivillaga的任何可能的副本,看来你是对的。这看起来太不直观了。。。对我来说,and和or是接受两个布尔值并返回一个布尔值的函数。但我想我的直觉是错误的。谢谢在我看来,我预计周一和周二的结果会是bool,我猜谁写了大多数其他语言,谁是一个重载运算符,返回bool。谢谢你的解释