どうして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