独家或。的单词形式

时间:2017-03-12 04:49:32

标签: python operators

我对python有点新意,所以我还在学习东西。我知道你可以独家或使用^,但出于好奇,有没有办法可以做一个独家或单词?例如,您可以使用and代替&,而您可以or代替||。是否有^的其中一个?

3 个答案:

答案 0 :(得分:5)

andor短路,意味着如果左侧使表达式始终为True或始终为False,则右侧甚至不会被评估:

False and f()  # Doesn’t call f, because if one is False the result is always False
True or f()    # Doesn’t call f, because if one is True the result is always True

False & f()    # Calls f anyway
True | f()     # Calls f anyway

没有这样的短路左手专属或(在a ^ b中,无论a是什么,b都可以改变整体价值),所以只需要对于一个操作员。

进一步详细说明:&|^可重载的运算符,这意味着类型可以定义它们以生成任何值。 (在int s的常见情况下,它们按位运行。)andor不是,并且总是评估它们的两个操作数之一:如果它是假的,那么左边的操作数是在and的情况下是正确的,在or的情况下是左边的,如果是真的则是左边的,在xor的情况下是正确的。对于假设的>>> True and "hello" "hello" >>> 0 and True 0 >>> True or "" True >>> False or "" "" >>> "truthy" xor "also truthy" ??? – can’t be either of these, because it has to be logically false 运算符,不清楚选择哪一个。

vertical-align: top;

答案 1 :(得分:0)

使用operator模块并注意,当操作两个bool时,xor与检查不等式相同。

from operator import xor
bitwise_xor1 = a ^ b
bitwise_xor2 = xor(a,b)

from operator import ne
logical_xor1 = a != b
logical_xor2 = ne(a,b)

请注意,对于bool,按位操作实际上会返回bool,但对于其他类型,它们可能不会。{/ p>

答案 2 :(得分:-1)

目前尚未存在,但如果您需要支持宏,则可以使用pypi中的macro包。