人工智能开发语言:Python
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.4 运算符和表达式

3.4.1 算术运算

Python中的算术表达式与其他语言基本一致,常用算术表达式见表3-18。

表3-18 常用算术表达式

另外再介绍两种算术运算表达式。

1)取整除法(//)

包括向上取整、向下取整、向零取整。向上取整时,所取整数大于实际值,如:

7.8//3==3.0

7.8//-3==-2.0

向下取整时,所取整数小于实际值,如:

7.8//3==2.0

-7.8//3==-3.0

向零取整时,所取整数的绝对值小于实际值的绝对值,如:

7.8//3==2.0

-7.8//3==-2.0

Python采用的是向下取整的方式,这点需要读者注意。

2)取模(%)

又称取余,计算两个变量取整除法(//)后的余数,计算公式为:

remainder = x – (x//y)*y,其中x为被除数,y为除数。

举例如下:

输出结果如下:

注意:在不同语言中,取模计算的方法可能不同。

3.4.2 关系运算符

关系运算符也称比较运算符,其结果为一般布尔值(True或者False),见表3-19。

表3-19 关系运算符

3.4.3 赋值运算

Python中的赋值运算表达式见表3-20。

表3-20 赋值运算表达式

3.4.4 逻辑运算

Python语言支持的逻辑运算包括与、或、非三种,表达式见表3-21。

表3-21 逻辑运算表达式

注意:数值0、空字符串、空元组、空集合、空列表、空字典、None值相当于布尔值False。举例如下:

输出结果如下:

3.4.5 位运算

位运算是以二级制数的位为对象的运算方法。Python中位运算包括位与(&)、位或(|)、位异或(^)以及位取反(~)、位左移(<<)、位右移(>>)等,见表3-22。

表3-22 位运算

为了更清楚地说明以上运算符的作用,下面举例说明。

输出结果如下:

Python中的左移运算与C/C++、Java等语言有区别,造成这一问题的原因在于Python把int类型的数值视为无精度类型,不会发生溢出而进行截取的情况。解决这个问题的方法有两种:一种是在Python中自己编写一个函数,模拟其他语言的规则来实现左移;另外一种是使用其他语言实现左移,然后在Python中调用。

3.4.6 身份运算

身份运算用来比较两个对象的内存位置(内存地址),常用的有两个,见表3-23。

表3-23 身份运算

身份运算(is)与比较运算(==)之间的主要区别是,is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值(内容)是否相等。例如:

输出结果如下:

3.4.7 成员运算

成员运算用来判断某个变量是否为某个序列变量的子成员。序列变量可以是字符串、元组、列表等类型变量,见表3-24。

表3-24 成员运算

实例说明:

输出结果如下:

可以看出,操作符左边的变量也可以为元组、列表等类型。

3.4.8 运算符优先级

表3-25按照从优先级从高到低的顺序列出了Python中的各种运算符。

表3-25 运算符优先级

运算符的优先级顺序必须牢记,如果一时不明确,可以使用小括号把需要一起计算的片段包围起来,这样小括号内的片段会被当做一个整体来对待,如下面实例: