03 身份运算符、逻辑运算符

# ### 身份运算符 is | is not 检测两个数据在内存中是否是同一个地址
 
'''
仅仅限定在3.6版本之前 是变量的缓存 ,
判断一个值在某个范围内存在,就不会再另外创建一个相同的值,为了节省内存空间
3.7之后不再划定范围,只要有一份就缓存
提出小数据池 或者变量缓存是为了提升代码执行的效率,减少内存占用空间
'''
# 整型 -5 ~ 正无穷
var1 = 19
var2 = 19
res = var1 is var2
print(res)
 
# 浮点型  非负数
var1 = -5.52
var2 = -5.52
res = var1 is not var2
print(res)
 
# 复数 在实数 + 虚数这样的结构中永远不一样 但如果只有虚数 在值相同情况下一样
var1 = 3+4j
var2 = 3+4j
res = var1 is  var2
var1 = 6j
var2 = 6j
res = var1 is not var2
print(res)
 
# bool 在布尔值相同的情况下 id一样
var1 = True
var2 = True
res = var1 is var2
print(res)
 
# 容器类型数据地址判断
 
# str 字符串而言,字符串值相同情况下,id一致
var1 = "你"
var2 = "你"
print(var1 is var2)
 
 
var1 = (1,23)
var2 = (1,23)
print(var1 is var2)
# 空元组例外
var1 = ()
var2 = ()
print(var1 is var2)
 
# 剩下的容器类型数据无论什么值都不一样
var1 = [1,2]
var2 = [1,2]
print(var1 is not var2)
 
 
# ### 逻辑运算符 and or not 
print("<===>")
# and 逻辑与
'''小明写作业:数学和英语都写完叫写完'''
"""***** 全真则真 一假则假"""
res  = True and  True
res = True and False
res = False and True
res = False and False
print(res)
 
# or  逻辑或
"""妈妈奖励小明:说有一门考及格了,我就给你买布加迪威龙"""
'''***** 全假则假 一真则真'''
res = True or True
res = True or False
res = False or True
res = False or False
print(res)
 
# not 逻辑非(相当于取反)
res = not True
res = not False
print(res)
 
# 逻辑短路
"""
一个or或者一个and 情况下
(1)True or something
(2)False and something
"""
 
print("<===>")
False or print(123)
True and print(456)
 
# 逻辑优先级
# () > not > and > or 
res = 5 or 6 and 7
res = (5 or 6) and 7 # 5 and 7
res = not (5 or 6) and 7 # not 5 and 7 => False and 7 => False
print(res) # 5 or 7
 
res = 1<2 and 3>4 or 5<6 # True and False or True => False or True
res = 1<2 and 3>4 or 5>6 and 7<8 or 9>10 # True and False or False and True or False =>False or False or False => False or False => False       
print(res)
 
# 这种情况特殊,上来直接短路,后面的不用再按照and or 优先级算了 (例外)
res = 5 or 6 and 7 or 8 and 9 or 10
# 如果上来直接是假,不一定结果也是假,要依次向后计算
# False and True or True 
 
 
#数据类型判断 isinstance
"""
int float bool complex str list tuple set dict
 
isinstance(要判断类型的数据,(类型1,类型2,类型3......))
如果在类型元组当中,返回真
如果不在类型元组当中,返回假
"""
intvar  = 15
print(isinstance(intvar,int))
strvar = "789"
print(isinstance(strvar,(int,str,list)))

  

猜你喜欢

转载自www.cnblogs.com/eliwen/p/10968240.html