Python 中的 AndAlso (&&) 和 OrElse (||) 逻辑运算符的等价物是啥?
Posted
技术标签:
【中文标题】Python 中的 AndAlso (&&) 和 OrElse (||) 逻辑运算符的等价物是啥?【英文标题】:What's the equivalent of AndAlso (&&) and OrElse (||) logical operators in Python?Python 中的 AndAlso (&&) 和 OrElse (||) 逻辑运算符的等价物是什么? 【发布时间】:2018-05-14 08:05:52 【问题描述】:在.NET VB和C#中,我们可以使用AndAlso(&&)、OrElse(||)进行逻辑运算
在 Python 中,什么是等效的逻辑运算符?它们是否仅限于“and”和“or”?
更新:以下是 And/Or 和 AndAlso/OrElse 之间的区别 引用自https://***.com/a/8409488/719998
Or/And 将始终计算这两个表达式,然后返回一个 结果。他们不是short-circuiting 评估。
OrElse/AndAlso 是短路的。仅当无法从评估中确定结果时才评估正确的表达式 单独的左表达式。 (这意味着: OrElse 只会评估 如果左表达式为假,则右表达式,并且 AndAlso 将 仅当左表达式为真时才计算右表达式。)
【问题讨论】:
and
和AndAlso
的逻辑区别是什么?我不知道 VB/C#,所以可能会有所不同,但我无法想象是什么。如果您需要 Python 人员来回答,您应该澄清预期的行为。
请在本教程中查看您的答案:tutorialspoint.com/python/python_basic_operators.htm问候,
有"or"、"and"和"not" 来源:tutorialspoint.com/python/logical_operators_example.htm
戳了一下,听起来 VB 的 AndAlso
是短路的,而 And
不是。 Python 的and
短路。这就是你要找的东西吗?
【参考方案1】:
Python 已经这样做了:
def foo():
print ("foo")
return True
def bar():
print ("bar")
return False
print (foo() or bar())
print ("")
print (bar() or foo())
返回:
foo
True
bar
foo
True
Python 中不需要 AndAlso 或 OrElse,它会懒惰地评估布尔条件 (docs)。
【讨论】:
【参考方案2】:在python中,您可以使用逻辑门。
例如,您可以使用and
或&
。
https://docs.python.org/2/library/stdtypes.html#bitwise-operations-on-integer-types
【讨论】:
以上是关于Python 中的 AndAlso (&&) 和 OrElse (||) 逻辑运算符的等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章
AndAlso 在几个 Expression<Func<T, bool>> 之间:从范围引用
(OrElse and Or) and (AndAlso and And) - 啥时候使用?