我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
运算符分类
- 算术运算符
- 比较运算符
- 逻辑运算符
- 位运算符符
- 赋值运算符
- 链式比较运算符
- 成员运算符
- 身份运算符
算术运算符
- 假设:a = 10 , b = 2
运算 运算符 描述 实例 输出结果 加法运算 + 两个对象相加,或两个字符串相连接 10 + 2
‘A’ + ‘C’12
‘AC’减法运算 - 两个对象相减 10 - 2 8 乘法运算 * 两个数相乘,或被重复若干次的字符串 10 * 2
‘A’ * 320
AAA除法运算 / 返回两个数相除的结果,a 除以b 9 / 2 4.5 整除运算 // 返回小于商的最大整数 9 // 2
-9 // 24
-5取模运算 % 返回两个数相除的余数 10 % 2
9 % 20
1幂运算 ** 乘方,a 的 b次方 10 ** 2 100
- 一个数字与2取模,可以判断这个数字的奇偶性
- 可以通过整除和取模运算判断行号和列号(行列均从0开始算)
- 例:获取上图中数字9所在的行和列
print('row:', 9 // 4) print('col:', 9 % 4) # 这里的4是一行所排列的数字个数 # 输出结果: row: 2 col: 1 # 因为行和列都是从0开始计算,所以第三行的行号是2,第2列的列号是1
比较运算符(关系运算符)
-
假设:a = 10 , b = 2
运算 运算符 描述 实例 输出结果 值相等 == 判断两个对象的值是否相等 a == b False id相等 is 判断两个对象id是否相等 a is b False 不等于 != 判断两个数是否不相等 a != b True 大于 > 判断x是否大于y a > b True 小于 < 判断x是否小于y a < b False 大于或等于 >= 判断x大于y 或者 x等于y a >= b True 小于或等于 <= 判断x小于y 或者 x等于y a <= b False -
<> 在python2里面是不等于,在python3里已被!=取代
-
is 与 == 的区别
- is 比较的是id
- " == "比较的是值
-
可以通过id()函数获取对象的id(id并不是内存地址,而是通过内存地址计算出来的,相当于内存地址的一个映射)
-
示例:
a=1000,b=1000 a is b ----------------> False a == b ----------------> True //注:用id(a)可以获取a在的id
-
‘==’ 与 is 的区别
逻辑运算符
-
返回True或False
运算 运算符 描述 实例 输出结果 逻辑“与” and 有 假 即为 假 True and False False 逻辑“或” or 有 真 即为 真 True or False True 逻辑“非” not 本 真 即为 假 not True False -
python语句中 and 比 or 的优先级高
-
语句中 and 比 or 的优先级高
- and:有False即为False
- or:有True即为True
-
示例
a = True b = False c = False print(a or b and c) # 返回值:True print((a or b) and c) # 返回值:False
-
图解:
-
逻辑或和逻辑与有短路特征
-
非布尔类型的值,如果作为真假来判断,一般都是非零即真,非空即真
print('数字0:', bool(0)) print('数字1:', bool(1)) print('文本0:', bool('0')) print('空文本:', bool('')) print('None值:', bool(None)) # 输出结果 数字0: False 数字1: True 文本0: True 空文本: False None值: False
-
整个逻辑表达式的结果不一定只有True和False
print('1 and False:', 1 and False) # 非零即真,and没有短路,判断后面的False,一假全假,输出False print('0 and False:', 0 and False) # 零为假,and一假全假,短路特性,不会再判断后面的False,输出 0 print('1 and 3:', 1 and 3) # 非零即真,and没有短路,判断后面的3,全是真,所以输出 3 print('1 or 3:', 1 or 3) # 非零即真,or一真全真,短路特性,不在判断后面的3,输出 1 print('0 or 3:', 0 or 3) # 零为假,or没有短路,判断后面的3,非零即真,or一真全真,输出 3 # 输出结果 1 and False: False 0 and False: 0 1 and 3: 3 1 or 3: 1 0 or 3: 3
-
位运算符符
-
在计算机中,数据是按照字节进行存储的。一个字节是一个8位二进制数(由0和1组成),这个8位二进制数可以按位进行计算
-
假设:a = 0b10110010 ———— 十进制数为:178
-
假设: b = 0b01011110 ———— 十进制数为:94
运算 运算符 描述 实例 输出结果 位反 ~ 将值按位取反【~a = (a + 1) * (-1)】 ~a -179 位与 & 有0则为0 a & b 18 位或 | 有1则为1 a b 位异或 ^ 相同为0,相反为1 a ^ b 236 右移 >> 将值按位向右移动指定位数,高位用符号位补位(正数是0,负数是1) a >> 2 44 左移 << 将值按位向左移动指定位数,低位用0补位 a << 1 100 -
位反运算
- 位反运算相当麻烦,并不是简单的将0变成1,1变成0。在计算机中一个数据的存储设计到反码和补码的问题。位反运算涉及到源码、反码、补码,这里我们不深究其原理,简单的了解位反运算,总结了一个公式:
~a = (a + 1) * -1
- 位反运算相当麻烦,并不是简单的将0变成1,1变成0。在计算机中一个数据的存储设计到反码和补码的问题。位反运算涉及到源码、反码、补码,这里我们不深究其原理,简单的了解位反运算,总结了一个公式:
-
位与运算
-
位或运算
-
位异或运算
-
右移运算
-
左移运算
赋值运算
-
假设a = 10 , b = 2
运算 运算符 描述 实例 输出结果 直接赋值 = 直接赋值,简单的赋值运算 a = 10 10 加法赋值 += 加法赋值运算,a = a + b a += b 12 减法赋值 -= 减法赋值运算,a = a - b a -= b 8 乘法赋值 *= 乘法赋值运算,a = a * b a *= b 20 除法赋值 /= 除法赋值运算,a = a / b a /= b 5 取模赋值 %= 取模赋值运算,a = a % b a %= b 0 整除赋值 //= 整除赋值运算,a = a // b a //= b 5 幂赋值 **= 幂赋值运算,a = a ** b a **= b 100 位与赋值 &= 位与赋值运算,a = a & b a &= b 位或赋值 |= 位或赋值运算,a = a | b a |= b 位异或赋值 ^= 位异或赋值运算,a = a ^ b a ^= b 左移赋值 <<= 左移赋值运算,a = a << b a <<= b 右移赋值 >>= 右移赋值运算,a = a >> b a >>= b
链式比较运算符
- 链式比较运算符是python独有的,其他语言均没有
- 语法
10 < a <= 66
- 示例
num = 10 # 判断num是否 大于5 并且 小于 20 # 其他语言的写法 # 5 < num and num < 20 # 5 < num && num < 20 # python用链式运算符写法 5 < num < 20 print(5 < num < 20)
运算符优先级
- 运算顺序根据运算符优先等级进行运算,相同等级运算符从左到右运算
优先级 运算符 说明 1 () 小括号 2 ** 幂 3 ~ 位反 4 +、- 正负号 5 *、/、%、// 乘、除、取余、地板除 6 +、- 加、减 7 <<、>> 左移、右移 8 & 位与 9 ^ 位异或 10 | 位或 11 <、<=、>、>=、<>、!=、== 比较 12 not 逻辑非 13 and、or 逻辑与、逻辑或