身份运算符和逻辑运算符

Posted eliwen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了身份运算符和逻辑运算符相关的知识,希望对你有一定的参考价值。

# ### 身份运算符 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 not var2
print(res)
var1 = 6j
var2 = 6j
res = var1 is 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 var2)

# ### 逻辑运算符 and or not
# 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

print("<====>")
#数据类型判断 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,list,tuple)))

 

以上是关于身份运算符和逻辑运算符的主要内容,如果未能解决你的问题,请参考以下文章

运算符

条件逻辑运算符成员运算与身份运算

关于简单的运算二进制运算逻辑运算符成员运算符身份运算符

4. 运算符

python 运算符

Python—运算符的类型