来源
运算符是用于进行各种运算操作的符号或关键词。
Python 语言常用运算符如下:
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 成员运算符 in 、not in
- 身份运算符 is 、is not
- 运算符优先级
这些运算符,根据使用操作数的不同,可分为:
- 单目运算符
- 双目运算符
- 三目运算符
1.算术运算
除法 / : 两个操作数相除,结果为浮点数类型
整除 // : 两个操作数相除,取商,结果为整数类型
取模 % : 也称为求余运算符, 两个操作相除,取余数为计算结果
幂运算 ** :返回 x 的 y 次幂
…
2.赋值运算符
(1)普通赋值运算符 =
将等号左侧的数据保存到等号右侧的变量中
a = 1
s = "Hello"
sum = 1 + 2
赋值运算符还支持同时定义多个变量
a, b, c = 1, 2, 3
print(a, b, c)
(2)复合赋值运算符
+=
-=
*=
…
3.逻辑运算符
与and
或or
非not
3.1短路特性
在使用 逻辑与
运算符和 逻辑或
运算符时,如果自左向右计算结果可以确定整个表达式的结果时,后面的表达式条件便不在计算。
(1) 非短路操作
result = True and print("Hello, World!1") # 第一个操作数为True,不能确定后续都为真,所以print语句会执行
print(result) # 输出 None,print语句的返回值为None
result = False or print("Hello, World!2") # 第一个操作数为False,不能确定后续都为假,所以print语句会执行
print(result) # 输出 None,print语句的返回值为None
(2) 短路操作
result = False and 1/0 # 第一个操作数为False,已经可以确认整个表达式的结果,虽然表达式有除0错误,但并不会执行
print(result) # 结果为False
result = True or 1/0 # 第一个操作数为True,已经可以确认整个表达式的结果,虽然表达式有除0错误,但并不会执行
print(result) # 结果为True
4.成员运算符
用于判断实例中是否包含了一系列的成员,包括字符串,列表或元组。
(1)in 如果在指定的序列中找到值返回 True
,否则返回 False
。
(2)not in 如果在指定的序列中没有找到值返回 True
,否则返回 False
。
5.身份运算符
Python 中的身份运算符用来判断两个对象的引用是否为同一个,换言之,就是用来比较两个对象的内存地址是否相同。
5.1 身份运算符
1.is
是判断两个标识符是不是引用自一个对象
is
用来判断两个对象内存引用地址是否相同,如果相同,结果为真 True
,如果不相同,结果为假 False
注意:两个字面量相同的对象,内存地址未必相同,就像两个双胞胎,长的相同,但是是两个独立的个体。
2. is not
是判断两个标识符是不是引用自不同对象|
is not
用来判断两个对象内存引用地址是否不同,如果不同,结果为真 True
,如果相同,结果为假 False
5.2 特殊情况
Python 对数字和字符串做了一些优化以提高性能和减少内存开销。
以下是 Python 对数字和字符串做的一些优化:
(1)整数池(Integer Pool):Python 会在程序运行时预先创建一些整数对象,并将其保存在整数池中。这样,在创建整数对象时,可以重用已存在的对象,而不是创建新的对象。这在一定程度上减少了内存开销。
(2)字符串池(String Pool):对于较短的字符串,Python 会使用字符串池进行优化。字符串池是一个缓存区,保存着所有共享相同内容的字符串对象。当创建新的字符串对象时,Python 会首先检查是否已经存在相同内容的字符串对象,如果存在,则直接重用已有的对象,避免重复创建新的对象。
5.3 is和==的区别
在 Python 中,万物皆对象,而对象的三个基本要素:
- 内存地址
- 数据类型
- 值
而 is
与 ==
都作为常用的判断语句去进行使用,这两者之间的主要区别是:
(1) ==
运算符: 只比较两个对象的值,相同返回 True
,不同返回 False
。
(2) is
运算符: 比较两个对象的地址引用,相同返回 True
,不同返回 False
。
6.三目运算符/三元运算符
可以将 Python 中的三目运算符理解成是: if-else
分支语句的简化单行模式
语法格式: [on_true] if [expression] else [on_false]
-
on_true
: 条件为真时的结果 -
on_false
: 条件为假时的结果 -
expression
: 判断条件
Python 会先判断 expression
条件表达式的结果:
- 如果条件为真,则结果为
[on_true]
的值 - 如果条件为假,则结果为
[on_false]
的值
print("Yes" if True else "No")
print("Yes" if False else "No")
注意: 实际开发过程中,不建议使用三目运算符,相比较 if-else
结构的分支语句,三目运算符的可读性不高。