python常见的运算符及用法

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]