Python3的运算符
算术运算符
| 运算符 | 描述 |
|---|---|
| + | 加号,两个数相加 |
| - | 减号,两个数相减 |
| * | 乘号,两个数相乘 |
| / | 除号,x除以y |
| % | 取模,返回余数 |
| ** | 幂,返回x的y次幂 |
| // | 整除,向下取整 |
举例: x = 13 ; y = 5; c = 0 ;
c = x + y
print(c)
c = x - y
print(c)
c = x * y
print(c)
c = x / y
print(c)
c = x % y
print(c)
# 修改初始变量
x = 3
y = 2
c = x ** y
print(c)
x = 10
y = 5
c = x // y
print(c)
输出:
18
8
65
2.6
3
9
2
比较运算符
| 运算符 | 描述 |
|---|---|
| == | 等于 - 比较对象是否相等 |
| != | 不等于 - 比较两个对象是否不相等 |
| > | 大于 - 返回x是否大于y |
| < | 小于 - 返回x是否小于y |
| = | 大于等于 - 返回x是否大于等于y |
| <= | 小于等于 - 返回x是否小于等于y |
举例: x = 13 ; y = 5;
c = x == y
print(c)
c = x != y
print(c)
c = x y
print(c)
c = x < y
print(c)
c = x = y
print(c)
c = x <= y
print(c)
输出:
False
True
True
False
True
False
赋值运算符
| 运算符 | 描述 | 举例 |
|---|---|---|
| = | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
| += | 加法赋值运算符 | c += a 等效于 c = c + a |
| -= | 减法赋值运算符 | c -= a 等效于 c = c - a |
| *= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
| /= | 除法赋值运算符 | c /= a 等效于 c = c / a |
| %= | 取模赋值运算符 | c %= a 等效于 c = c % a |
| **= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
| //= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
| := | 海象运算符,在表达式中同时进行赋值和返回赋值的值 | 下面有 |
举例: x = 13 ; y = 5 ; c = 0;
c = x + y
print(c)
c += x
print(c)
c -= x
print(c)
c *= x
print(c)
c /= x
print(c)
c %= x
print(c)
c **= x
print(c)
c //= x
print(c)
输出:
18
31
18
234
18.0
5.0
1220703125.0
93900240.0
海象运算符 举例:
if (c := x) 10:
print(c)
输出:
13
解释: 海象运算符是表达式而非语句,这意味着它有返回值。它在赋值的同时返回被赋的值,从而可以在条件判断、循环等需要表达式的地方直接使用
位运算符
| 运算符 | 描述 |
|---|---|
| & | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |
| | | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1 |
| ^ | 按位异或运算符:当两对应的二进位相异时,结果为1 |
| ~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 |
| << | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0 |
| >> | 右移动运算符:把" "左边的运算数的各二进位全部右移若干位," "右边的数指定移动的位数 |
例如: a = 0011 1100 b = 0000 1101
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
举例:x = 13; y = 5; c = 0;
print(bin(x)[2:])
print(bin(y)[2:])
c = x & y
print(c)
print(bin(c)[2:])
c = x | y
print(c)
print(bin(c)[2:])
c = x ^ y
print(c)
print(bin(c)[2:])
c = ~x
print(c)
print(bin(c)[3:])
c = x << 2
print(c)
print(bin(c)[2:])
c = x >> 2
print(c)
print(bin(2)[2:])
输出:
1101
101
5
101
13
1101
8
1000
-14
1110
52
110100
3
10
逻辑运算符
| 运算符 | 描述 |
|---|---|
| and | 布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值 |
| or | 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值 |
| not | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True |
举例:x = 13; y = 5; c = 0;
c = x and y
print(c)
print(bool(c))
c = x or y
print(c)
print(bool(c))
c = not x
print(bool(x))
print(c)
输出:
5
True
13
True
True
False
成员运算符
| 运算符 | 描述 |
|---|---|
| in | 如果在指定的序列中找到值返回 True,否则返回 False |
| not in | 如果在指定的序列中没有找到值返回 True,否则返回 False |
举例:x = 13; y = 5; lists = [1, 2, 3, 4, 5];
if x in lists:
print("x 在 lists 里")
else:
print("x 不在 lists 里")
if y not in lists:
print("y 在 lists 里")
else:
print("y 在 lists 里")
输出:
x 不在 lists 里
y 在 lists 里
身份运算符
| 运算符 | 描述 |
|---|---|
| is | is 是判断两个标识符是不是引用自一个对象 |
| is not | is not 是判断两个标识符是不是引用自不同对象 |
举例:x = 13; y = 5;
c = x is y
print(c)
c = x is not y
print(c)
# 修改变量
y = 13
c = x is y
print(c)
c = x is not y
print(c)
输出:
False
True
True
False
is 和 == 的区别:
is 是用来判断两个变量引用对象是否为同一个,== 是用来判断两个变量的值是否相同
例如:
x = [4,5,6]
y = x
print(x is y)
print(x == y)
y = x[:]
print(x is y)
print(x == y)
输出:
True
True
False
True
运算符优先表
| 优先级 | 运算符说明 | 运算符 | 结合性 |
|---|---|---|---|
| 最高 | 括号、函数调用、切片、属性引用 | () [] {} . |
— |
| 幂运算 | ** |
右→左 | |
| 一元运算符 | +x -x ~x |
右→左 | |
| 乘、除、整除、取模 | * / // % |
左→右 | |
| 加、减 | + - |
左→右 | |
| 位移 | << >> |
左→右 | |
| 按位与 | & |
左→右 | |
| 按位异或 | ^ |
左→右 | |
| 按位或 | | |
左→右 | |
| 比较、成员、身份 | in not in is is not < <= = != == |
左→右 | |
| 逻辑非 | not |
右→左 | |
| 逻辑与 | and |
左→右 | |
| 最低 | 逻辑或 | or |
左→右 |
注:
1. 同一行优先级相同,按出现顺序从左到右计算(除幂运算和一元运算符为右结合)。
2. 使用括号可显式改变默认优先级。