2.8.1 数值类型的基本运算

比较是数值之间最常见的操作之一,这些操作的结果是布尔类型的值。表2-4和表2-5中给出了比较操作符和常见的数值运算操作符。

表2-4 比较操作符

表2-5 最常见的数值运算操作符

来看如下实际的例子。


>>> 1 + 1
2

>>> 100 + 22.1
122.1

>>> 10086 - 10000
86

>>> 100 * 2000
200000

>>> 666 / 6
111.0

>>> 100 % 3
1

数值运算可以做链式表达。


>>> 2 + 3 * 5 - 10 / 5
15.0

算术运算符是有优先级的,在做链式表达的时候,一定要注意运算符的优先级,必要的时候可以配合括号运算符。


>>> (2 + 3) * 5 - 10 / 5
23.0

在数学链式表达方面,我们可以通过括号来控制计算顺序,或者强调计算顺序,澄清代码意图。


>>> (2 + 3) * 5 - (10 / 5)
23.0

有很多算术运算在Python里没有对应的运算符,而是通过函数来完成,比如取绝对值。


>>> abs(99)
99
>>> abs(-8)
8

在这些操作的基础上,我们可以灵活组合,写出更复杂的数学逻辑,比如判断变量是不是偶数。


>>> y = 99
>>> y % 2 == 0
False

熟悉C++的读者对以下C++整型数自增代码肯定比较熟悉:


// 这是C++的自增代码
i++;
--i;

要特别注意,Python不支持这样的自增、自减操作。


>>> i = 0
>>> i++
    File "<stdin>", line 1
        i++
            ^
SyntaxError: invalid syntax

要做到这样的自增操作,Python要通过显式的方法。


>>> i = i + 1

或者如下这样的简化写法。


>>> i += 1
>>> i -= 5

如果读者学过C++编程,应该或多或少被自增自减操作折磨过,因为需要了解i++和++i的细微差别,需要知道它们在什么时间点做“增/减”的操作,需要反复琢磨以写出符合预期的代码,或者找出可能的bug。对于自增自减操作,Python的不支持是一个更好的设计。