Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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_Operators - Fatal编程技术网

Python 异或的词形

Python 异或的词形,python,operators,Python,Operators,我对python有点陌生,所以我还在学习。我知道你可以通过使用^来实现独占或独占,但出于好奇,有没有一种方法可以用文字实现独占或独占?例如,您可以使用和代替&,也可以使用或代替|。是否有一个用于^?不,目前还不存在,但如果您需要对宏的支持,可以使用pypi的包。不,目前还不存在,但如果您需要对宏的支持,可以使用pypi的包。和和或短路,这意味着如果左侧使表达式始终为True或始终为False,则右侧甚至不会被计算: False and f() # Doesn’t call f, because

我对python有点陌生,所以我还在学习。我知道你可以通过使用
^
来实现独占或独占,但出于好奇,有没有一种方法可以用文字实现独占或独占?例如,您可以使用
代替
&
,也可以使用
代替
|
。是否有一个用于
^

不,目前还不存在,但如果您需要对宏的支持,可以使用pypi的包。

不,目前还不存在,但如果您需要对宏的支持,可以使用pypi的包。

短路,这意味着如果左侧使表达式始终
为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
排他性or(在
a^b
中,无论
a
是什么,
b
都可以改变整体值),因此只需要一个操作符

更详细地说:
&
|
^
是可重载的运算符,这意味着类型可以定义它们以生成任何值。(在
int
s的常见情况下,它们按位动作。)
不是,并且总是计算它们的两个操作数中的一个:左操作数如果是假操作数,右操作数如果是假操作数,左操作数如果是真操作数,右操作数则是假操作数。对于一个假设的
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

短路,这意味着如果左侧使表达式始终为
或始终为
,则右侧甚至不会被计算:

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
排他性or(在
a^b
中,无论
a
是什么,
b
都可以改变整体值),因此只需要一个操作符

更详细地说:
&
|
^
是可重载的运算符,这意味着类型可以定义它们以生成任何值。(在
int
s的常见情况下,它们按位动作。)
不是,并且总是计算它们的两个操作数中的一个:左操作数如果是假操作数,右操作数如果是假操作数,左操作数如果是真操作数,右操作数则是假操作数。对于一个假设的
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

使用
操作符
模块,注意在两个布尔上操作时,异或与检查不等式相同

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
s,按位运算实际上会返回
bool
,但对于其他类型,它们可能不会返回。

使用
运算符
模块,并注意在两个bool上操作时,异或与检查不等式相同

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
s,按位操作实际上返回
bool
,但对于其他类型,它们可能不返回。

&
是两个非常不同的运算符,
(Python中没有
|
).
&
是两个非常不同的运算符,
(Python中没有
|
)也是如此。当然,主要的区别是,就是说,
对布尔值进行运算,
&
|
对单个位进行运算。@DYZ:
&
|
可以重载任何操作,并且它们在布尔值上的工作方式与您期望的一样,也就是说,
True | False为True
True | False为True
,因为
True
False
表示为1和0。但是
1 | 2
是3(而且
3不是真的
)。@DYZ:
1
2
也不是布尔值,
1和
2
2
。但是
1和
是0,这可能会让那些忘记
是按位应用的人感到惊讶。当然,主要的区别是,就是说,
对布尔值进行运算,
&
|
对单个位进行运算。@DYZ:
&
|
可以重载任何操作,并且它们在布尔值上的工作方式与您期望的一样,也就是说,
True | False为True
True | False为True
,因为
True
False
表示为1和0。但是
1 | 2
是3(而且
3不是真的
)。@DYZ:
1
2
也不是布尔值,
1和
2
2
。但是
1和
是0,这可能会让那些忘记
是按位应用的人感到惊讶。