逻辑运算符
用于连接多个条件的结果判断
1. and 连接的多个条件必须全部满足,结果成立。
print(1==1 and 2==2)# True
print (1==2 and 3) #False
#and连接的条件如果不是一个具体的值,则需要转换成布尔值
print (10>3 and 100) #100
print (1 and 10) #10
#由于and前面的运算得出的布尔值是True,所以and连接的条件最终的结果是由后面的值来决定的。
#如果后面的值是明确的数据值,那么直接返回该数据值(数据值对应的布尔值必须是True)
print(10>3 and False) #False
2. or 连接的多个条件有一个满足,结果成立。
print(1==1 or 2==4)# True
print(1==3 or False) # False
print(1==1 or False) # True
print(1==3 or 2==2)# True
print(1 or 2)# 1
#or连接的多个条件返回值可能是布尔值也可能是数据值
3. not 将后面的结果取反,得出的肯定是bool值
print(not Ture) #False
print(not False) #Ture
三者混用的时候有优先级之分,应该提前用括号划定优先级。
print ((1==2 and 3)or(1==1 and 2==2)or(1==1 or 2==4))# Ture
成员运算符
1.in
判断某个个体是否在某个群体内
2.not in
判断某个个体不在某个群体内
- 针对列表list的成员运算,最小单位是单个数据值,不可以再细化
l1 = ['summer','hebb','jos','hu']
print('summer' in l1) #Ture
l1 = ['summer','hebb','jos','hu']
print('sum' in l1) #False
- 针对字符串str的成员运算,最小单位可以细化到单个字符,也可以增加字符
name = 'summer'
print('s' in name) #Ture
name = 'summer'
print('su' in name) #Ture
- 针对字典dict的成员运算,最小单位是字典的k值,v不参与
s1={'name':'summer'}
print('name' in s1) #True
s1={'name':'summer'}
print('summer' in s1) #False
身份运算
- is 用来判断数据值对应的内存地址是否相等
l1 = [11,2,2,3,4,5]
l2 = [11,2,2,3,4,5]
print(id(l1)) # 1935630344712
print(id(l2)) # 1935630344776
#id()该方法会返回一串数字,相当于内存地址
#该方法每运行一次内存地址就会变化
print(l1 is l2) #False
- == 用来判断数据值是否相等
l1 = [11,2,2,3,4,5]
l2 = [11,2,2,3,4,5]
print(l1==l2) #True
#数据值相等 内存地址不一定相等
#内存地址相等 数据值一定相等 (单次程序中)
python内存优化机制
python针对数据量小并且经常使用的数据会做内存优化机制
python认为一些“看起来像python标识符的字符”和小整数字在开发中是常用的;
因此,出于节省内存的角度思考,对于这部分字符串和数字做出了优化;
python解释器会由于要定义的新变量内容与之前定义过的变量内容相同而不让这部分内容占用新的内存空间。
#1、对于[-5,257)范围内的数字有优化机制
#2、对于[-5,257)范围外的数字没有优化机制
#3、对于短字符串有优化机制,长字符串没有优化机制
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/272735.html