这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战。
Python语言支持以下类型的运算符:
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
- 三目运算符
算术元运算符
Python中的算术元运算符与我们平常使用的OC或者Swift中的基本一致,比较特殊的有:
**:幂,返回x的y次幂。例如:10**20,表示10的20次方。//:取整除,返回商的整数部分。例如9/2输出4。 平时使用时需注意的地方:
-
/计算结果是浮点数,即使两个数都是整数,结果也是浮点数:
>>> 9/3
3.0
>>> 10/3
3.3333333333333335
-
//取整除,只取整数部分,余数被抛弃:
>>> 10//3
3
>>> -10//3
-4 # 向下取整
-
%余数运算
>>> 10%3
1
>>> -10%3
2 # 向下取整
-
divmod()同时得到商和余数,返回值是tuple (x//y, x%y)。
>>> divmod(10,3)
(3,1)
⚠️注意: 因为浮点数精度的问题,Python还存在一些计算方面的小问题:
0.1+0.1+0.1-0.3
5.551115123125783e-17
可以使用decimal模块:
from decimal import Decimal
Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3')
Decimal('0.0')
比较运算符
Python中的比较运算符与我们平常使用的OC或者Swift中的基本一致,比较特殊的有:
<>:不等于,比较两个对象是否不想等,类似!=。(python3中<>已弃用) 需注意的地方:
-
==比较数值(int与str不能直接比较):
>>> a = 1
>>> b = 2
>>> a != b
True
>>> a <> b
File "<stdin>", line 1
a <> b
^
SyntaxError: invalid syntax
- 字符串与字符串之间是比较
ASCII值:
>>> 'abc' < 'xyz' # 97 98 99 < 120 121 122
True
>>> (3,2) < ('a','b')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'int' and 'str'
- 连续比较:
>>> 3 > 2 > 1 # 3 > 2 and 2 > 1
True
>>> 3 > 2 > 2 # 3 > 2 and 2 > 2
False
>>> (3 > 2) > 1 # True and True > 1
False
赋值运算符
| 运算符 | 说明 | 例子 | ||
|---|---|---|---|---|
| = | 赋值 | x = y | ||
| -= | 减赋值 | x -= y, x = x - y | ||
| *= | 乘赋值 | x *= y, x = x * y | ||
| /= | 除赋值 | x /= y, x = x / y | ||
| %= | 取余数赋值 | x %= y, x = x % y | ||
| **= | 幂赋值 | x **= y, x = x ** y | ||
| //= | 取整数赋值 | x //= y, x = x // y | ||
| &= | 按位与赋值 | x &= y, x = x & y | ||
| = | 按位或赋值 | x | = y, x = x | |
| ^= | 按位异或赋值 | x ^= y, x = x ^ y | ||
| <<= | 左移赋值 | x <<= y, x = x << y | ||
| >>= | 右移赋值 | x >>= y, x = x >> y |
需注意的地方:
-
python不支持a++语法:
>>> a++ # python不支持a++语法
File "<stdin>", line 1
a++
^
SyntaxError: invalid syntax
-
+=不能拆开写+ =:
>>> a + = 1 # 不能拆开写 + =
File "<stdin>", line 1
a + = 1
^
SyntaxError: invalid syntax
位运算符
Python中的算术元运算符与我们平常使用的OC或者Swift中的基本一致。
逻辑运算符
Python支持逻辑运算符,但是不支持&&和||,取而代之的是更加人性化的英文单词and or not(全部都是小写字母):
a and b两者都为True时结果才为Truea or b两者有一个为True则结果就为True