1.运算符
(1)算术运算符
常用的算术运算符有三类:标准算术运算符、取余运算符、幂运算符。
- 标准算术运算符:
运算符 | 描述 | 示例 |
+ | 加 | a+b |
- | 减 | a-b |
* | 乘 | a*b |
/ | 除 | a/b |
// | 取整 | 11//5结果为2 |
print(3+2)
print(15-3)
print(6*6)
print(18/3)
print(25//4)
print(25//-4) # 取整运算中,若除数一正一负则向下取整,比如25//-4应该为-6,但是由于是一正一负的原因,所以结果为-7
- 取余运算符:
运算符 | 描述 | 示例 |
% | 取余 | a%b |
取余运算公式:余数=被除数-除数*商
print(19 % 3)
print(13//-4)
print(13 % -4) # 取余运算公式,余数=被除数-除数*商;13-(-4)*(-4)=13-16=-3;
print(-13 % -4) # -13-(-4)*(3)=-13+12=-1
- 幂运算:
运算符 | 描述 | 示例 |
** | 幂 | a**b |
print(2**3)
print(2**4)
(2)赋值运算符
运算符 | 描述 | 示例 |
= | 赋值 | a=b+c |
+= | 加法赋值运算符 | a+=b等效于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等效于a=a//b |
**= | 幂赋值运算符 | a**=b等效于a=a**b |
# 赋值运算符的执行顺序是从右→左的
a = 30
a1 = 30 + 40
print(a)
print(a1)
print('-------支持链式赋值---------')
a = b = c = 30
print(a, b, c)
print('-------支持参数赋值---------')
a = 30
a += 50
print(a)
a = 30
a -= 20
print(a)
a = 30
a *= 3
print(a)
a = 30
a /= 10
print(a)
a = 30
a %= 8
print(a)
a = 30
a //= 8
print(a)
a = 2
a **= 3
print(a)
print('--------支持系列解包赋值---------') # 赋值过程中需要确保左右两边的变量个数相等
a, b, c = 10, 20, 30
print(a, b, c)
(3)比较运算符
运算符 | 描述 | 示例 |
== | 是否相等 | a==b |
!= | 是否不相等 | a!=b |
> | 大于 | a>b |
>= | 大于等于 | a>=b |
< | 小于 | a<b |
<= | 小于等于 | a<=b |
is | 判断两个标识符是否引用同一对象 | a is b |
is not | 判断两个标识符是否引用不同对象 | a is not b |
a, b = 12, 14
print('a>b吗?', a > b) # 其结果输出的类型为bool类型
print('a<b吗?', a < b)
print('a>=b吗?', a >= b)
print('a<=b吗?', a <= b)
print('a==b吗?', a == b)
print('a!=b吗?', a != b)
print('a is b?', a is b) # 这是对其id进行比较
print('a is not b', a is not b)
(4)布尔运算符
运算符 | 描述 | 示例 |
and | 与 | a and b |
or | 或 | a or b |
not | 非 | a not b |
in | 判断是否存在 | a in b |
not in | 判断是否不存在 | a not in b |
print('------------and运算符----------') # and运算中,True和True为True,其余全为False
a, b = 5, 9
print(a == 5 and b == 9)
print(a == 5 and b < 9)
print(a < 5 and b == 9)
print(a < 5 and b < 9)
print('------------or运算符----------') # or运算中,False和False为False,其余全为True
print(a == 5 or b == 9)
print(a == 5 or b < 9)
print(a < 5 or b == 9)
print(a < 5 or b < 9)
print('------------not运算符---------') # 运行结果去相反的,针对布尔类型
a1 = False
a2 = True
print(not a1)
print(not a2)
print('----------in或not in运算符----')
a = 'hello word'
print('h' in a)
print('h' not in a)
print('s' in a)
print('s' not in a)
(5)位运算
运算符 | 描述 | 示例 |
& | 与 | a & b |
| | 或 | a | b |
^ | 异或 | a ^ b |
~ | 取反 | ~a |
>> | 右移 | a>>2 |
<< | 左移 | a<<2 |
print(4 & 8) # &表示与运算,同为1时为1
print(4 | 8) # |表示或运算,同为0时为0
print(4 ^ 8) # ^表示异或,结果相同时为0,不同时结果为1
print(~ 4) # 表示取反,先对结果取反,然后加1,再对符号取反
print(4 >> 2) # >>表示向右移一位
print(4 << 2) # <<表示向左移一位
2.运算符的优先级
Python中的运算符优先级,括号的优先级是最高的,无论什么时候都优先计算括号里的内容,布尔运算符中的逻辑运算符的优先级最低。以下运算符从上到下,优先级从高到低排列,同行优先级相同,相同优先级需要考虑结合实际情况考虑优先级。
括号:()
幂运算:**
取反:~
正号、负号:+、-
乘、除、取余、取整:*、/、%、//
加、减:+、-
右移、左移:>>、<<
与:&
异或、或:^、|
比较运算符:<=、<、>、>=
等于、不等于:==、!=
赋值运算符:=、%=、/=、//=、-=、+=、*=、**=
身份运算符:is、is not
成员运算符:in、not in
逻辑运算符:not、and、or