どうして2!=True ?

7170 ワード

真値テスト

True==0     # False
True==1     # True
True==2     # False
False==0        # True
False==1        # False
False==2        # False

pythonの任意のオブジェクトには真の値があり、次のオブジェクトの真の値はfalseです。

- None
- False
- zero of any numeric type,for example 0,0.0,0j.
- any empty sequence,for example,'',(),[].
- any empty mapping,for example,{}
- instances of user-defined classes, if the class defines a __bool__() or __len__() method, when that method returns the integer zero or bool value False. 

他のすべてのオブジェクトの真の値はtrueとみなされます.いくつかのブール値を返す操作と内蔵関数は、常に0またはFalseを返して真値がfalseであることを表し、1またはTrueを返して真値がtrueであることを表す.(例外:ブール演算orおよびandは常にその演算数を返します)

ブール演算

True and 0      # 0 
0 and True      # 0
True and 1      # 1
1 and True      # True
True and 2      # 2
2 and True      # True
False and 0     # False
0 and False     # 0
False and 1     # False
1 and False     # False
False and 2     # False
2 and False     # False
True or 0       # True
0 or True       # True
True or 1       # True
1 or True       # 1
True or 2       # True
2 or True       # 2
False or 0      # 0
0 or False      # False
False or 1      # 1
1 or False      # 1
False or 2      # 2
2 or False      # 2

pythonのブール操作には、次のルールがあります。


Operations
Result
Notes
x or y
if x is false,then y,else x
(1)
x and y
if x is false,then x,else y
(2)
not x
if x is false,then True,else False
(3)
Notes:
(1) This is a short-circuit operator, so it only evaluates the second argument if the first one is false. (2) This is a short-circuit operator, so it only evaluates the second argument if the first one is true. (3) not has a lower priority than non-Boolean operators, so not a == b is interpreted as not (a == b), and a == not b is a syntax error.

ブール値

isinstance(True,int)    # True
isinstance(False,int)   # True
True is 1       # False
False is 0      # False
int(True)       # 1
int(False)      # 0
bool(2)         # True
bool(0)         # False
 , True False, ;
 , True False 1 0, :5+True, 6 ;
 bool() , 。

結論:2!=True,ただしbool(2)==True.
bool(2) == True     #True
2 != True           #True