我找不到与not x
运算符相对应的方法。有一个and,or,xor
。它在哪里?https://docs.python.org/3/reference/datamodel.html
没有钩子and
或or
运算符,没有钩子(因为它们短路),并且xor
Python中没有运算符。该__and__
和__or__
是为按位 &
和|
运营商分别。等效的not
is的按位运算符是~
(inversion),它由__invert__
方法处理,同时__xor__
覆盖了^
按位运算符。
not
对一个对象的真值进行运算。如果您有容器,请给它一个__len__
方法,否则请给它一个__bool__
方法。请与任一人协商以确定是否应将某个对象视为“真”;not
反转该测试的结果。
因此,如果__bool__
返回True
或__len__
返回除以外的整数0
,not
则会将其求反False
,否则not
产生True
。请注意,not
除了布尔值外,您无法返回其他任何值!
从文档中__bool__
:
__bool__
要求执行真值测试和内置操作bool()
;应该返回False
或True
。如果未定义此方法,__len__()
则调用该方法(如果已定义),并且如果其结果为非零,则认为该对象为true。如果一个类既__len__()
没有定义,也没有定义__bool__()
,则其所有实例都被视为true。
对于not
表达式:
在布尔运算的上下文中,以及当控制流语句使用表达式时,以下值将解释为false:
False
,,None
所有类型的数字零以及空字符串和容器(包括字符串,元组,列表,字典,集合和Frozensets)。所有其他值均解释为true。用户定义的对象可以通过提供一种__bool__()
方法来自定义其真值。运营商
not
产生True
,如果它的参数是假的,False
否则。
大胆强调我的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句