程序中少了运算就如人不会说话,不会行走,便成了行尸走肉,我要要让程序动起来,自然是少不了运算。
在编程语言中运算符是一种告诉解释器或编译器执行特定的数学或逻辑操作的符号,大家注意 Python 是动态语言所以是调用解释器执行代码。
Python 语言内置了丰富的运算符,并提供了以下类型的运算符:算术运算符、比较运算符、位运算符、逻辑算符、成员运算符、身份运算符、三目算符等等。
注意:由于变量,常量,自定义类型变量都可以通过运算符进行运算,在本节的描述中,我们且把参与运算的各种类型的数据统一称为对象。
算术运算符
- 编程语言中的算符运算符和数学中的算术运算符大体一致, 但有一些地方会不同,假设对象
a = 7, b = 3
,通过各种算符运算后的结果如下表格。
- 我们要区分算术运算符 / 和 // 的区别,运算符 / 的结果和数学上的除法结果一样,而 // 的结果是取运算结果的 整数部分(注意,如果参与运算的数据有任意一个数是小数,则整数部分用浮点数表示)。
a = 7
b = 3
print(a / b) # 2.3333333333333335
print(a // b) # 取整数部分 2
a = 7.0
b = 3
print(a / b) # 2.3333333333333335
print(a // b) # 取整数部分 2,用浮点数 2.0 表示
注意:Python 语言中没有 ++ 和 -- 运算符,这两种运算符在其它语言中很常用。
比较运算符
- 编程语言中的比较运算符和数学上一致, 假设对象
a = 7, b = 3
,通过各种比较运算后的结果如下表格。
- 无论参与比较运算的是什么类型的对象,得出的结果都是布尔类型,注意:字符串做运算符
> 和 <
比较时,双方必须为字符串类型,否则语法错误 。
a = 7
b = "老鸟Python"
print(a == b) # False
print(a > b) # 语法报错,Python2 则可以比较
print(a < False)
- 注意:不要把数学中的等号 = 和程序中的等号 == 混淆,大于等于号 >= 不要写成 ≥,小于等于号 <= 不要写成 ≤。
赋值运算符
- 目前我们知道 = 是赋值运算符,但在编程语言中不止一种赋值运算符,假设对象
a = 7, b = 3
,通过各种赋值运算后的结果如下表格。
- 注意:对于直接赋值运算符 = 和所有算术运算符结合的间接赋值运算符, python 解释器在执行该语句时,会先把这条间接赋值运算语句进行拆分, 先执行算术运算符,然后再执行直接赋值运算符 =,最后得到算术运算符执行的结果。
a = 240
a += 10 # Python 解释器把该语句拆分成下面两句
#########################我是分割线########################
temp = a + 10 # Python 解释器先创建一个临时变量 temp
a = temp # 把临时变量 temp 赋值给变量 a
位运算符
- 虽然平时很少用到位运算符,但是在某些时候,位运算符确实能够给我们提供很好的解决方案, 位运算符是把数字看作二进制来进行计算的,假设对象
a = 7,b = 3
,对应的二进制格式为:a = 0000 0111,b = 0000 0011
, 通过各种位运算后的结果如下表格。
- 注意:Python 语言中没有同或运算符。
逻辑运算符
- 逻辑运算非常简单,当参与布尔运算的对象是布尔类型时,结果为布尔值。其它非布尔类型的对象进行 and 或 or 进行布尔运算时,结果是参与运算的最终类型值,但无论对什么类型的对象进行 not 运算,结果一定为布尔值。 假设对象
a = 7,b = "Hello"
,通过各种逻辑运算后的结果如下表格。
- and 运算规则:从参与运算的第一个值开始判断,如果是假值则停止运算,如果是真值则继续往后运算,一直运算到假值或者最后一个值,运算的结果为最后一个参与运算的值; or 运算规则:从参与运算的第一个值开始判断,如果是真值则停止运算,如果是假值则继续往后运算,一直运算到真值或者最后一个值,运算的结果为最后一个参与运算的值。
a = -1
b = ""
c = 0.2
print(a and b and c) # ""
print(a and b or c) # 0.2
print(a or b or c) # -1
print(a or b and c) # -1
本节重要知识点
- 牢记比较运算符的结果永远为布尔类型值。
- 知道 Python 语言中各种类型的假值。
作业
对于如下代码,猜一下输出值为多少,为什么?
a = -1 b = "" c = 0
print(a or b and c) # -1