1. 前言
Python作为一种强类型语言,虽然在初学者的心中时常被认为是易于学习的,但是在熟悉了它的各种数据类型之后,运算符也是必须要掌握的一部分。本文将重点讲解Python的常见运算符及用法。
2. 算数运算符
算术运算符用于执行算术运算。下表列出了Python支持的算数运算符:
运算符 | 描述 | 示例 |
---|---|---|
+ | 加 | 2+3 结果:5 |
- | 减 | 3-2 结果:1 |
* | 乘 | 2*3 结果:6 |
/ | 除 | 3/2 结果:1.5 |
// | 整除 | 3//2 结果:1 |
% | 取余 | 3%2 结果:1 |
** | 幂 | 2**3 结果:8 |
需要注意的是,Python3.x中的除法操作符除号‘/’对整数进行计算时,结果为浮点数。
# Python3.0之后的除法操作符的例子
>>> 3/2
1.5
>>> 2/2
1.0
而在Python2.x中,情况又有所不同。它们整数除会丢失掉小数点后所有的数值部分,只保留整数部分,即向下取整。
# Python2.0的除法操作符的例子
>>> 3/2
1
>>> 2/2
1
另外,整除操作符‘//’会向下取整得到一个整数值,而不是保留几位小数:
# 整除操作符的例子
>>> 10//3
3
>>> -10//3
-4
需要注意的是,使用两个星号操作符‘**’进行指数运算时要注意,乘方运算按照以下顺序实现:先计算幂的最高位,然后一位一位往下计算。比如2**1000会比1000**2更快,这是由于2**1000将再计算2的10次方,然后使用对应的值计算2的100次方,以此类推,每步乘积的位数都几乎是上一步的2倍,这大大提高了计算速度。
3. 比较运算符
比较运算符用于比较两个值。下表列出了Python支持的比较运算符:
运算符 | 描述 | 示例 |
---|---|---|
== | 等于 | 2==3 结果:False |
!= | 不等于 | 2!=3 结果:True |
> | 大于 | 3>2 结果:True |
< | 小于 | 2<3 结果:True |
>= | 大于等于 | 3>=2 结果:True |
<= | 小于等于 | 2<=3 结果:True |
需要注意的是,在Python中可以使用比较运算符进行任意类型的比较,不只是数字值类型。只要比较的两个值的类型一致,Python就会尝试将它们进行比较。
# 可以使用比较运算符进行任意类型的比较
>>> a = "xyz"
>>> b = "abc"
>>> a > b
True
>>> a < b
False
>>> a == b
False
>>> a != b
True
4. 逻辑运算符
逻辑运算符用于组合条件语句。下表列出了Python支持的逻辑运算符:
运算符 | 逻辑表达式 | 描述 | 示例 |
---|---|---|---|
and | x and y | 逻辑与 | True and False 结果:False |
or | x or y | 逻辑或 | True or False 结果:True |
not | not x | 逻辑非 | not True 结果:False |
需要注意的是,在Python中逻辑运算符的优先级与C语言中的逻辑运算符优先级相似,not运算符的优先级大于and和or。同时,and和or都是短路运算符。在处理and表达式时候,如果第一个运算量是False,就直接返回False;在处理or表达式的时候,如果第一个运算量是True,就直接返回True。
# and短路运算符示例
>>> 2<3 and 3<4
True
>>> 1==2 and 2==2
False
# or短路运算符示例
>>> "" or "Hello"
'Hello'
>>> "Hello" or ""
'Hello'
5. 位运算符
位运算符用于处理数字在二进制下的数值。下表列出了Python支持的位运算符:
运算符 | 描述 | 示例 |
---|---|---|
& | 按位与 | a & b |
| | 按位或 | a | b |
^ | 按位异或 | a ^ b |
~ | 按位取反 | ~a |
<< | 按位左移 | a << n |
>> | 按位右移 | a >> n |
需要注意的是,尤其是在Python 3.x中,数字直接没有限制,也没有对数字的长度进行限制。而在Python 2.x中,当你移位一个数组时,注意它的长度,会抛出异常。
# Python2.x中将抛出异常
>>> x = 1
>>> x << 8000
# 但是在Python3.x中不用担心
>>> x = 1
>>> x << 8000
18446744073709551616
6. 赋值运算符
赋值运算符用于给变量赋值。下表列出了Python支持的赋值运算符:
运算符 | 描述 | 示例 |
---|---|---|
= | 简单的赋值运算符 | 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&=b 等效于a=a&b |
|= | 按位或赋值运算符 | a|=b 等效于a=a|b |
^= | 按位异或赋值运算符 | a^=b 等效于a=a^b |
<<= | 按位左移赋值运算符 | a<<=b 等效于a=a<<b |
>>= | 按位右移赋值运算符 | a>>=b 等效于a=a>>b |
需要注意的是,运算符的优先级顺序:括号 > 指数 > 正负号 > 乘除 > 加减 > 比较运算符 > 等于运算符 > 逻辑运算符。同时,Python支持多重赋值语句,可以同时执行多个变量的赋值:
# Python中的多重赋值语句示例
a, b = 100, 200
print(a, b)
7. 成员运算符
成员运算符用于测试序列中是否包含指定的值。下表列出了Python支持的成员运算符:
运算符 | 描述 | 示例 |
---|---|---|
in | 如果在指定的序列中找到值返回True,否则返回False | 3 in [1,2,3] 结果:True |
not in | 如果在指定的序列中没有找到值返回True,否则返回False | 3 not in [1,2,3]
|