Python 文档转移操作 http://docs.python.org/3.3/reference/expressions.html#shifting-operations and 二进制按位运算 http://docs.python.org/3.3/reference/expressions.html#binary-bitwise-operations说参数必须是整数,但是下面的表达式计算没有错误,但是给出了奇数结果<<
and >>
.
我还应该在其他地方寻找文档吗&
等等,当使用布尔参数时,或者对评估和结果有一些很好的解释吗?
- 真与假:假(“bool”类)
- 真实|假:真(类“bool”)
- True ^ False:True(类“bool”)
- ~ 真:-2(类“int”)
- ~ 假:-1(类“int”)
- 真
- 假 >> 假:0(类“int”)
Code:
# Python ver. 3.3.2
def tryout(s):
print(s + ':', eval(s), type(eval(s)))
tryout('True & False')
tryout('True | False')
tryout('True ^ False')
tryout('~ True')
tryout('~ False')
tryout('True << True')
tryout('False >> False')
bool http://docs.python.org/3.3/library/functions.html#bool是一个子类int
,因此他们are整数。特别是True
表现得像1
and False
表现得像0
.
注意bool
only重新实现&
, |
and ^
(来源:源代码位于Objects/boolobject.c http://hg.python.org/cpython/file/6ec43643c54f/Objects/boolobject.c#l92在Python源代码中),对于所有其他操作的方法int
被使用[实际上:继承],因此结果是int
s 和语义是整数的语义。
关于<<
and >>
, 表达方式True << True
相当于1 << 1
i.e. 1 * 2 == 2
, while False >> False
is 0 >> 0
, i.e. 0 * 1 == 0
.
你应该认为 python 的True
and False
as 1
and 0
对它们进行算术运算时。重新实施&
, |
and ^
only 影响返回类型 http://hg.python.org/cpython/file/6ec43643c54f/Objects/boolobject.c#l57,而不是语义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)