'和'N'或'在python中的确切含义是什么?

时间:2012-11-28 10:09:57

标签: python

我现在真的很困惑,在我的程序思维模型中,如果遇到像这样的表达式

expr = expr1和expr2

这意味着expr的类型必须是布尔值,与'或'操作

相同

请参阅下面的代码,假设三行将打印布尔值

print(1==1 and 3)
print(1==2 and 3)
print(1==2 and 3 or 4)

但结果是

3
False
4

我必须重新学习基本编程:

and和or的真正含义 'e1和e2'表示如果结果为False,则评估e1返回False,否则返回e2 'e1或e2'表示如果结果为True则评估e1返回True否则返回e2

我能做对吗?

3 个答案:

答案 0 :(得分:5)

这种行为本身并不与布尔逻辑有关。相反,它是Python特有的。而不是始终返回True / Falseandor将返回两个操作数之一的值。

以下是一个很好的解释:The Peculiar Nature of and and or

答案 1 :(得分:2)

这就是Python的工作原理,显然是为了增加opperand类型的灵活性。

来自Python文档5. Expressions

  

表达式x和y首先计算x;如果x为false,则返回其值;否则,评估y并返回结果值。

     

表达式x或y首先计算x;如果x为真,则返回其值;否则,评估y并返回结果值。

答案 2 :(得分:2)

你不必学习“基础编程”;你必须研究Python中定义的andor运算符。

您对布尔逻辑的真值表的想法是正确的,但在Python中,这些运算符不需要布尔参数,也不返回布尔值。

请参阅these truth tables,但请记住,xy可以包含任何类型。查看this description of which values are considered false也很有帮助。