2.4.4 布尔运算符
我们的布尔运算符有以下几种需要我们掌握:and,or,not,in,not in.其实我们通过它的名字就可以知道它的含义,and就是且,or就是或,not就是否定,in就是在,not in表示不在,下面我们还是通过代码去展示它们的用途:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/6 22:30 # 欢迎大家关注AIoT相关博客~ ''' and 的用法: 1.如果and左右为bool类型: 只有当两边同时为True,执行and操作结果才为True 如果两边只要有一边为False,操作结果就为False 2.如果两边为int类型: 两边只有有一边等于0,操作结果就为0 如果两边都不为0,如 1 and 2,操作结果为and后面的数:2 ''' flag1,flag2,flag3,flag4 = True, False, True, False print(flag1 and flag2) # True and False print(flag1 and flag3) # True and True print(flag2 and flag4) # False and False a, b, c, d = 0, 1, 2, -1 print(a and b) # 0 and 1 print(b and c) # 1 and 2 print(b and d) # 1 and -1 print('----------------------------------') ''' or 的用法: 1.如果or左右为bool类型: 只有当两边同时为False,执行or操作结果才为False 如果两边只要有一边为True,操作结果就为True 2.如果两边为int类型: 只有两边同时等于0,执行or操作结果才为0 如果左边不为0,如 1 or 0,操作结果为1 如果右边不为0,如 0 or 2,操作结果为2 如果两边都不为0,如 1 or 2,那么操作结果为1(左边的数) 从上述中可以看出,我们可以理解or为只要碰到了第一个为True或不为0的数的时候就会停止后续的判断 我们把这种性质称为惰性求值的特点 ''' flag1,flag2,flag3,flag4 = True, False, True, False print(flag1 or flag2) # True or False print(flag1 or flag3) # True or True print(flag2 or flag4) # False or False a, b, c, d = 0, 1, 2, -1 print(a or b) # 0 or 1 print(c or b) # 2 or 1 print(b or d) # 1 or -1 print('----------------------------------') ''' or 的用法: 1.如果not后接bool类型: 直接取反,True取反为False,False取反为True 2.如果not后接int类型: 如果int类型的数为0,输出结果为True 如果int类型的数为1,输出结果为False ''' print(not 0) print(not 666) print('----------------------------------') ''' in 和 not in 的用法: 1.in表示判断我们的目标串是否在我们的模板串中 如果在,返回True 如果不在,返回False 2.not in表示判断我们的目标串是否不在我们的模板串中 如果不在,返回False 如果在,返回True ''' s1 = 'o' #这里的s1就是目标串 s2 = 'hello world' #这里的s2就是模板串 print(s1 in s2) #判断s1 在 s2 中 print(s1 not in s2) #判断s1 不在 s2中
2.4.5 位运算符
❗️ 注:所有的位运算都是先把数转为二进制之后的运算
位运算包涵运算符:位与(&),位或(|),左移运算符(<<),右移运算符(>>)
运算符 | 作用 |
& | 对应数位都是1,结果数位才是1,否则为0 |
| | 对应数位都是0,结果数位才是0,否则为1 |
<< | 相当于 * 2k |
>> | 相当于 // 2k |
这里补充一个函数:bin(),其函数的作用为,把一个十进制的数放入()
中,bin()函数会把这个数转为二进制的数,二进制的数以0b
开头,这一点我们在 1.Python的七十二变—*1.4 二进制与字符编码 中有提到,下面来用代码进行演示:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/6 23:24 # 欢迎大家关注AIoT相关博客~ a = 0b10010 b = 0b10101 print(bin(a & b)) # 二进制一位一位比较,只有同时为1才为1 print(bin(a | b)) # 二进制一位一位比较,只有同时为0才为0 c = 80 print(c // 2 ** 3) # ** 的运算优先级高于 * print(c >> 3) print(c * 2 ** 3) # ** 的运算优先级高于 * print(c << 3)
2.4.6 运算符的优先级
我们在之前学习的时候都听过一句话:先乘除后加减,这的意思就是乘除的优先级是大于加减的,我们上述提到的所有运算符也都有它们的优先级顺序,我们按 优先级从高到低进行排序,排序结果如下:
** *,/,//,% +,- <<,>> & | <,>,==,!=,<=,>= and or =
当然,这不是绝对的,我们在以前同样学过,当我们遇到(),应该先算()里面的,这一点在 Python 代码中同样适用,下面给代码演示:
# 博主:辰chen # 博客地址:https://chen-ac.blog.csdn.net/ # 开发时间:2021/12/6 23:17 # 欢迎大家关注AIoT相关博客~ print(3 * (2 + 3))
*2.4.7 关于 ++ 和 –
注:本小节带 *,不需要进行学习,可以简单进行了解
⛲️ 如果你学过 C/C++,你知道,在 C/C++中有一种常用的运算符,那就是 ++和–运算符,特此声明:在 Python 语言中不存在 ++运算符和 --运算符,如果你没有学过 C/C++,那么你可以忽略本小节.