python运算符
Python支持以下类型的运算符:
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
真值表
算术运算符
表格内假设变量a为10、变量b为3
| 运算符 | 描述 | 实例 |
| + | 加--两个对象相加 | a+b输出结果为13 |
| - | 减--得到负数或一个数减去另一个数 | a-b输出结果为7 |
| * | 乘--两个数相乘或返回一个被重复若干次的字符串 | a*b输出结果为30 |
| / | 除--两个数相除 | a/b输出结果为3.3333333333333335 |
| % | 取模--返回除法的余数 | a%b输出结果为1 |
| ** | 幂--返回a的y次幂 | a**b输出结果为a的b次方=1000 |
| // | 整除--返回除法的商 | a//b输出结果为3 |
实例:
#!/usr/bin/env python # coding=utf-8 a = 10 b = 3 c = 0 c = a + b print("1 - c 的值为:", c) c = a - b print("2 - c 的值为:", c) c = a * b print("3 - c 的值为:", c) c = a / b print("4 - c 的值为:", c) c = a % b print("5 - c 的值为:", c) c = a ** b print("6 - c 的值为:", c) c = a // b print("7 - c 的值为:", c)
实例结果:
1 - c 的值为: 13 2 - c 的值为: 7 3 - c 的值为: 30 4 - c 的值为: 3.3333333333333335 5 - c 的值为: 1 6 - c 的值为: 1000 7 - c 的值为: 3
比较运算符
下表中的变量a为30、变量b为26
| 运算符 | 描述 | 实例 |
| == | 等于--比较对象是否相等 | ( a == b )返回False |
| != | 不等于--比较两个对象是否不相等 | ( a != b )返回True |
| > | 大于--比较一个对象是否大于另一个对象 | ( a > b )返回True |
| < | 小于--比较一个对象是否小于另一个对象 | ( a < b )返回False |
| >= | 大于等于--比较一个对象是否大于或等于另一个对象 | ( a >= b )返回True |
| <= | 小于等于--比较一个对象是否小于或等于另一个对象 | ( a <= b )返回False |
实例:
#!/usr/bin/env python # coding=utf-8 a = 30 b = 26 if a == b: print("1 - a 等于 b") else: print("1 - a 不等于 b") if a != b: print("2 - a 不等于 b") else: print("2 - a 等于 b") if a < b: print("3 - a 小于 b") else: print("3 - a 大于等于 b") if a > b: print("4 - a 大于 b") else: print("4 - a 小于等于 b") if a <= b: print("5 - a 小于等于 b") else: print("5 - a 大于 b") if b >= a: print("6 - b 大于等于 b") else: print("6 - b 小于 b")
实例结果:
1 - a 不等于 b 2 - a 不等于 b 3 - a 大于等于 b 4 - a 大于 b 5 - a 大于 b 6 - b 小于 b
赋值运算符
下表中的变量a为10、变量b为3
| 运算符 | 描述 | 实例 |
| = | 赋值运算符 | 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 ** a |
| //= | 取商赋值运算符 | c //= a :等效于c = c // a |
实例:
#!/usr/bin/env python # coding=utf-8 a = 3 b = 10 c = a + b print("1 - c 的值为:", c) c = 20 c += a print("2 - c 的值为:", c) c = 20 c *= a print("3 - c 的值为:", c) c = 20 c /= a print("4 - c 的值为:", c) c = 20 c %= a print("5 - c 的值为:", c) c = 20 c **= a print("6 - c 的值为:", c) c = 20 c //= a print("7 - c 的值为:", c)
实例结果:
1 - c 的值为: 13 2 - c 的值为: 23 3 - c 的值为: 60 4 - c 的值为: 6.666666666666667 5 - c 的值为: 2 6 - c 的值为: 8000 7 - c 的值为: 6
位运算符
位运算符是把数字看做二进制来进行计算的
下表中的变量a为60、变量b为13
| 运算符 | 描述 | 实例 |
| & | 按位与运算符--参加运算的两个值,如果两个相应为都为1,则该位的结果为1,否则为0 | ( a & b )输出结果为12 |
| | | 按位或运算符--只要两个对应的二进制位有一个为1时,结果位就为1 | ( a | b )输出结果为61 |
| ^ | 按位异或运算符--当两个对应的二进制位相异时,结果位为1 | ( a ^ b )输出结果位49 |
| ~ | 按位取反运算符--将二进制数+1之后乘以-1 | ( ~ a )输出记过为-61、( ~ b )输出结果位-14 |
| << | 按位左移运算符--运算数的各个二进制位向左移动若干位,由“<<”右边的数字指定移动的位数,高位丢弃,低位补0 | ( a << 2 )输出结果为240 ( b << 2 )输出结果为52 |
| >> | 按位右移运算符--运算数的各个二进制位向右移动若干位,由“>>”右边的数字指定移动的位数, | ( a >> 2 )输出结果为15
( b >> 2 )输出结果为3 |
实例:
#!/usr/bin/env python # coding=utf-8 a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = a & b # 60 = 0011 1100 # 13 = 0000 1101 # 按位与运算得到:0000 1100,换算为十进制:2**2 + 2**3=12 print("1 - c 的值为:", c) c = a | b # 60 = 0011 1100 # 13 = 0000 1101 # 按位或运算得到:0011 1101,换算为十进制:2**0 + 2**2 + 2**3 + 2**4 + 2**5 = 61 print("2 - c 的值为:", c) c = a ^ b # 49 = 0011 0001 # 60 = 0011 1100 # 13 = 0000 1101 # 按位异或运算得到:0011 0001,换算位为十进制:2**0 + 2**4 + 2**5 = 49 print("3 - c 的值为:", c) c = ~a # 60 = 0011 1100 # 按位取反运算得到:-0011 1101,换算为十进制:-(2**0 = 2**2 + 2**3 + 2**4 + 2**5)= -61 print("4 - c 的值为:", c) c = a << 2 # 60 = 0011 1100 # 按位左移运算得到:1111 0000,换算为十进制:2**4 + 2**5 + 2**6 + 2**7 = 240 print("5 - c 的值为:", c) c = a >> 2 # 60 = 0011 1100 # 按位左移运算得到:0000 1111,换算为十进制:2**0 + 2**1 + 2**2 + 2**3 = 15 print("6 - c 的值为:", c) c = b>> 2 # 13 = 0000 1101 # 按位左移运算得到:0000 0011,换算为十进制:2**0 + 2**1 = 3 print("7 - c 的值为:", c)
实例结果:
1 - c 的值为: 12 2 - c 的值为: 61 3 - c 的值为: 49 4 - c 的值为: -61 5 - c 的值为: 240 6 - c 的值为: 15 7 - c 的值为: 3
逻辑运算符
| 运算符 | 逻辑表达式 | 描述 |
| and | x and y | 逻辑“与”运算符--如果x、y都为真,则返回True,否则返回False |
| or | x or y | 逻辑“或”运算符—如果x、y有一个为真,则返回True,否则返回False |
| not | not x | 逻辑“非”运算符--如果x为真,则返回False,否则返回True |
实例:
#!/usr/bin/env python # coding=utf-8 a = True b = False print(a and b) print(a or b) print(not a) print(not b)
实例结果:
False
True
False
True
成员运算符
| 运算符 | 描述 |
| in | 判断在值是否在指定的序列中,是则返回True,否则返回False |
| not in | 判断在值是否不在指定的序列中,是则返回True,否则返回False |
实例:
#!/usr/bin/env python # coding=utf-8 a = 10 b = 4 list1 = [1, 2, 3, 4, 5] if a in list1: print("1 - 变量 a 在给定的列表中 list 中") else: print("1 - 变量 a 不在给定的列表中 list 中") if b not in list1: print("2 - 变量 b 不在给定的列表中 list 中") else: print("2 - 变量 b 在给定的列表中 list 中") # 修改变量 a 的值 a = 2 if a in list1: print("3 - 变量 a 在给定的列表中 list 中") else: print("3 - 变量 a 不在给定的列表中 list 中")
实例结果:
1 - 变量 a 不在给定的列表中 list 中 2 - 变量 b 在给定的列表中 list 中 3 - 变量 a 在给定的列表中 list 中
身份运算符
| 运算符 | 描述 |
| is | is--判断两个标识符是不是引用自同一个对象 |
| is not | is not--判断两个标识符是不是引用自不同的对象 |
实例:
#!/usr/bin/env python # coding=utf-8 a = 20 b = 20 if a is b: print("1 - a 和 b 有相同的标识") else: print("1 - a 和 b 没有相同的标识") if id(a) == id(b): print("2 - a 和 b 有相同的标识") else: print("2 - a 和 b 没有相同的标识") # 修改变量 b 的值 b = 30 if a is b: print("3 - a 和 b 有相同的标识") else: print("3 - a 和 b 没有相同的标识") if a is not b: print("4 - a 和 b 没有相同的标识") else: print("4 - a 和 b 有相同的标识")
实例结果:
1 - a 和 b 有相同的标识 2 - a 和 b 有相同的标识 3 - a 和 b 没有相同的标识 4 - a 和 b 没有相同的标识
运算符优先级
下表中从上到下的优先级为从高到低
| 运算符 | 描述 |
'string' |
字符串转换 |
| {key:value,…} | 字典 |
| [string1,string2,…] | 列表 |
| (string1,string2,…) | 元组 |
| function(string,…) | 函数调用 |
| x[index:index] | 切片 |
| x[index] | 下表索引取值 |
| x.attribute | 属性引用 |
| x**y | 幂 |
| ~x | 按位翻转 |
| +x、-x | 正、负 |
| *、/、%、// | 乘、除、取余、取商 |
| + 、- | 加号、减号 |
| >>、<< | 按位右移、按位左移 |
| & | 按位与 |
| ^、| | 按位异或、按位或 |
| >、<、>=、<=、!=、== | 大于、小于、大于等于、小于等于、不等于、等于 |
| =、+=、-=、*=、**=、/=、%=、//= | 赋值运算符 |
| is、is not | 身份运算符 |
| in、not in | 成员运算符 |
| not、or、and | 逻辑运算符 |
| lambda | Lambda表达式 |
真值表
| 对象/常量 | 值 |
"" |
假 |
'string' |
真 |
| 0 | 假 |
| >=1 | 真 |
| <=-1 | 真 |
| ()空元组 | 假 |
| []空列表 | 假 |
| {}空字典 | 假 |
| None | 假 |
浙公网安备 33010602011771号