注意:
逻辑值 | 常规形式 | 数值 | 字符串 |
真 | True | 非0值 | 非空值 |
假 | False | 0 | None |
对and探究:
print(True and True and True)
print(True and False and True)
print(True and False and 10)
print(True and 10 and 0)
print(False and 10 and 0)
print(False and 'aaa' and None)
print("-"*30)
print(True and True,10 and 10)
print(True and False,10 and 0)
print(False and True,0 and 10)
print(False and False,0 and 0) #当纯的时候,结果很好记
print("-"*30)
print(10 and True,True and 10)
print(10 and False,True and 0)
print(0 and True,False and 10)
print(0 and False,False and 0) #呵呵,还不具有交换性
#短路原理,如果第一个操作数等价与False,就输出第一个操作数(原型)
#如果第一个操作数等价与True,就输出第二个操作数(原型)
True
False
False
0
False
False
------------------------------
True 10
False 0
False 0
False 0
------------------------------
True 10
False 0
0 False
0 False
感觉类似短路原理:如果第一个操作数等价与False,就输出第一个操作数(原型);如果第一个操作数等价与True,就输出第二个操作数(原型)。
同理,or应该也是这样:
如果第一个操作数等价与True,就输出第一个操作数(原型);如果第一个操作数等价与False,就输出第二个操作数(原型)。
print(True or True,10 or 10) #T,10
print(True or False,10 or 0) #T,10
print(False or True,0 or 10) #T,10
print(False or False,0 or 0) #F,0
print("-"*30)
print(10 or True,True or 10) #10,T
print(10 or False,True or 0) #10,T
print(0 or True,False or 10) #T,10
print(0 or False,False or 0) #F,0
对的:
True 10
True 10
True 10
False 0
------------------------------
10 True
10 True
True 10
False 0
not 没什么,要么输出True,要么输出False
b=a="aaa"*2
c="aaaaaa"
print(a is b)
print(id(a) == id(b))
print(a is c)
print(id(a) == id(c))
print(id(a))
True
True
True
True
1827513174704