Python3 运算符
Python3 支持以下类型运算符:
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
- 运算符优先级
算术运算
a , b = 2,3
| 运算符 |
说明 |
示例 |
| + |
加:将两个对象相加 |
a + b 结果 5 |
| - |
减:将两个对象相减 |
a - b 结果 -1 |
| * |
乘:将两个对象相乘或复制字符串 |
a * b 结果 6 |
| / |
除:将两个对象相除;a /b |
a / b 结果 0.6666666666666666 |
| % |
取模或取余数 |
a % b 结果 2 |
| // |
整除:将两个对象相除,取整 |
a // b 结果 0 |
| ** |
指数运算,或幂运算 |
a ** b 结果 8 |
比较运算(关系运算)
a , b = 2,3
| 运算符 |
说明 |
示例 |
| == |
等于:比较两个对象是否相等 |
a == b 结果 False |
| != |
不等于:比较两个对象不相等 |
a != b 结果 True |
| > |
大于:比较对象a是否大于对象b |
a > b 结果 False |
| < |
小于:比较对象a是否小于对象b |
a < b 结果 True |
| >= |
大于等于:比较对象a是否大于或等于对象b |
a >= b 结果 False |
| <= |
小于等于:比较对象a是否小于或等于对象b |
a <= b 结果 True |
赋值运算
| 运算符 |
说明 |
示例 |
| = |
赋值运算 |
a = 1 |
| += |
加法赋值 |
a += 1 等同于a = a + 1 |
| -= |
减法赋值 |
a -= 1 等同于 a = a - 1 |
| *= |
乘法赋值 |
a *= 1 等同于 a = a * 1 |
| //= |
整除赋值 |
a //= 2 等同于a = a // 2 |
| %= |
取余赋值 |
a %= 2 等同于 a = a % 2 |
| ** = |
幂运算赋值 |
a *= 2 等同于 a = a ** 2 |
| /= |
除法赋值 |
a /= 2 等同于 a = a / 2 |
逻辑运算
a , b = 2 , 3
| 运算符 |
说明 |
示例 |
| and |
与运算:如果a为 False;a and b 返回 False,否则它返回b 的值 |
a and b 结果 3 |
| or |
或运算:如果a为True,a or b返回a的值,否则返回b的值 |
a or b 结果 2 |
| not |
非运算:单目运算符,not a 如果a为True,返回False;反之则返回True |
not a 结果 False |
位运算
python的位运算是把数字当作二进制来计算,操作符如下:
- 按位与:&
- 按位或:|
- 按位异或:^
- 按位取反:~
- 左移:<<
- 右移:>>
具体详细使用暂时不说。
成员运算
- 成员运算符有in、not in 两种,这里以下边代码作为说明示例
#!/usr/bin/python3
a = 'a'
lisa = ['a', 'b', 'c']
lisb = ['d', 'e', 'f']
if a in lisa:
print('变量a在列表lisa中')
if a not in lisb:
print('变量a不在列表lisb中')
以上代码输出
变量a在列表lisa中
变量a不在列表lisb中
身份运算
- 身份运算有两个操作符:is 、is not
- is 与 ==不同,==比较的是值,is比较的是存储对象
- 以下代码为示例说明
#!/usr/bin/python3
a = 'a'
b = 'a'
if a is b:
print('a 和 b 指向同一个存储对象,有相同的标识')
else:
print ('a 和 b 没指向同一个存储对象,没有相同的标识')
if id(a) == id(b):
print ('a 和 b 指向同一个存储对象,有相同的标识')
else:
print ('a 和 b 没指向同一个存储对象,没有相同的标识')
#修改变量 b 的值
b = 'b'
if a is b:
print ('a 和 b 指向同一个存储对象,有相同的标识')
else:
print ('a 和 b 没指向同一个存储对象,没有相同的标识')
if a is not b:
print ('a 和 b 没指向同一个存储对象,没有相同的标识')
else:
print ('a 和 b 指向同一个存储对象,有相同的标识')
以上代码输出:
a 和 b 指向同一个存储对象,有相同的标识
a 和 b 指向同一个存储对象,有相同的标识
a 和 b 没指向同一个存储对象,没有相同的标识
a 和 b 没指向同一个存储对象,没有相同的标识
运算符优先级
以下表格列出了优先级从高到低所有运算符
| 运算符 |
描述 |
| ** |
指数 (最高优先级) |
| ~ , + , - |
按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
| * , / , % , // |
乘,除,取模和取整除 |
| + , - |
加法减法 |
| >> , << |
右移,左移运算符 |
| & |
位 'AND' |
| ^ |
位运算符 |
| <= , < , > , >= |
比较运算符 |
| <> , == , != |
等于运算符 |
| = , %= , /= , //= , -= , += , *= , **= |
赋值运算符 |
| is , is not |
身份运算符 |
| in , not in |
成员运算符 |
| and , or , not |
逻辑运算符 |