运算符和表达式
学习Python中的各种运算符和如何构建表达式来执行计算和操作数据
运算符概述
在Python中,运算符是用于执行各种操作的符号。它们可以用于数学计算、比较值、逻辑操作等。 表达式是由运算符和操作数组成的组合,用于计算值。
运算符分类
- 算术运算符:用于执行基本的数学运算
- 比较运算符:用于比较两个值
- 逻辑运算符:用于组合条件语句
- 赋值运算符:用于给变量赋值
- 位运算符:用于操作二进制位
- 成员运算符:用于测试序列中是否存在特定元素
- 身份运算符:用于比较对象是否相同
表达式
表达式是由运算符和操作数组成的代码片段,用于计算值。例如:
算术运算符
算术运算符用于执行基本的数学运算,如加法、减法、乘法等。
算术运算符列表
| 运算符 | 描述 | 示例 |
|---|---|---|
| + | 加法 - 两个数相加 | 5 + 3 = 8 |
| - | 减法 - 从左边减去右边 | 5 - 3 = 2 |
| * | 乘法 - 两个数相乘 | 5 * 3 = 15 |
| / | 除法 - 左边除以右边 | 5 / 3 = 1.6666666666666667 |
| // | 取整除 - 商的整数部分 | 5 // 3 = 1 |
| % | 取模 - 除法的余数 | 5 % 3 = 2 |
| ** | 幂 - 左边的右边次幂 | 5 ** 3 = 125 |
算术运算符示例
比较运算符
比较运算符用于比较两个值,并返回一个布尔值(True或False)。
比较运算符列表
| 运算符 | 描述 | 示例 |
|---|---|---|
| == | 等于 - 检查两个值是否相等 | 5 == 3 → False |
| != | 不等于 - 检查两个值是否不相等 | 5 != 3 → True |
| > | 大于 - 检查左边是否大于右边 | 5 > 3 → True |
| < | 小于 - 检查左边是否小于右边 | 5 < 3 → False |
| >= | 大于等于 - 检查左边是否大于或等于右边 | 5 >= 3 → True |
| <= | 小于等于 - 检查左边是否小于或等于右边 | 5 <= 3 → False |
比较运算符示例
逻辑运算符
逻辑运算符用于组合条件语句,并返回一个布尔值(True或False)。
逻辑运算符列表
| 运算符 | 描述 | 示例 |
|---|---|---|
| and | 逻辑与 - 如果两个条件都为True,则返回True | 5 > 3 and 10 > 5 → True |
| or | 逻辑或 - 如果任何一个条件为True,则返回True | 5 > 3 or 10 < 5 → True |
| not | 逻辑非 - 反转条件的结果 | not(5 > 3) → False |
逻辑运算符示例
逻辑运算符的短路特性
Python中的逻辑运算符具有短路特性:
- 对于and运算符,如果第一个条件为False,则不会计算第二个条件
- 对于or运算符,如果第一个条件为True,则不会计算第二个条件
赋值运算符
赋值运算符用于给变量赋值,并且可以结合其他运算同时进行赋值。
基本赋值运算符
最基本的赋值运算符是等号(=),用于将右侧的值赋给左侧的变量。
复合赋值运算符
复合赋值运算符是将算术或位运算与赋值操作结合的简写形式。
| 运算符 | 描述 | 示例 |
|---|---|---|
| += | 加法赋值 - 将右侧值加到变量上 | x += 5 等价于 x = x + 5 |
| -= | 减法赋值 - 从变量中减去右侧值 | x -= 5 等价于 x = x - 5 |
| *= | 乘法赋值 - 将变量乘以右侧值 | x *= 5 等价于 x = x * 5 |
| /= | 除法赋值 - 将变量除以右侧值 | x /= 5 等价于 x = x / 5 |
| //= | 取整除赋值 - 将变量整除右侧值 | x //= 5 等价于 x = x // 5 |
| %= | 取模赋值 - 将变量对右侧值取模 | x %= 5 等价于 x = x % 5 |
| **= | 幂赋值 - 将变量的右侧次幂赋值给变量 | x **= 5 等价于 x = x ** 5 |
赋值运算符示例
位运算符
位运算符用于操作二进制位。它们将数字转换为二进制形式,然后对每一位进行操作,最后返回十进制结果。
位运算符列表
| 运算符 | 描述 | 示例 |
|---|---|---|
| & | 按位与 - 对应位都为1时结果为1 | 5 & 3 → 1 |
| | | 按位或 - 对应位有一个为1时结果为1 | 5 | 3 → 7 |
| ^ | 按位异或 - 对应位不同时结果为1 | 5 ^ 3 → 6 |
| ~ | 按位取反 - 每一位取反(0变1,1变0) | ~5 → -6 |
| << | 左移 - 所有位向左移动指定位数,右边补0 | 5 << 2 → 20 |
| >> | 右移 - 所有位向右移动指定位数,左边补符号位 | 5 >> 1 → 2 |
位运算符示例
成员运算符
成员运算符用于测试序列(如字符串、列表、元组)、集合或字典中是否存在特定元素。
成员运算符列表
| 运算符 | 描述 | 示例 |
|---|---|---|
| in | 如果序列中包含指定元素,则返回True | 'a' in 'apple' → True |
| not in | 如果序列中不包含指定元素,则返回True | 'x' not in 'apple' → True |
成员运算符示例
身份运算符
身份运算符用于比较两个对象是否是同一个对象,即它们是否在内存中引用同一个位置。
身份运算符列表
| 运算符 | 描述 | 示例 |
|---|---|---|
| is | 如果两个对象是同一个对象,则返回True | x is y |
| is not | 如果两个对象不是同一个对象,则返回True | x is not y |
身份运算符示例
== 和 is 的区别
==比较两个对象的值是否相等is比较两个对象是否是同一个对象(内存地址相同)
运算符优先级
运算符优先级决定了表达式中运算符的计算顺序。当表达式中有多个运算符时,优先级高的运算符先计算。
运算符优先级列表
以下是Python中运算符的优先级从高到低的顺序(优先级高的先计算):
| 优先级 | 运算符 | 描述 |
|---|---|---|
| 1 | ** |
幂运算 |
| 2 | ~ + - |
按位取反, 正号, 负号 |
| 3 | * / % // |
乘, 除, 取模, 取整除 |
| 4 | + - |
加, 减 |
| 5 | << >> |
左移, 右移 |
| 6 | & |
按位与 |
| 7 | ^ | |
按位异或, 按位或 |
| 8 | < <= > >= |
比较运算符 |
| 9 | == != |
等于, 不等于 |
| 10 | is is not |
身份运算符 |
| 11 | in not in |
成员运算符 |
| 12 | not |
逻辑非 |
| 13 | and |
逻辑与 |
| 14 | or |
逻辑或 |
运算符优先级示例
以下示例展示了运算符优先级如何影响表达式的计算顺序:
互动练习
练习1: 算术运算
计算表达式:10 + 5 * 3 - 20 / 4
练习2: 比较运算
比较结果:10 > 5 and 15 < 20 or not(3 == 4)
练习3: 位运算
计算位运算:5 & 3 | 2
练习4: 身份运算
判断结果:x = [1, 2]; y = [1, 2]; x is y
章节总结
在本章中,我们学习了Python中各种类型的运算符和表达式:
- 算术运算符用于执行基本的数学运算
- 比较运算符用于比较两个值并返回布尔值
- 逻辑运算符用于组合条件语句
- 赋值运算符用于给变量赋值
- 位运算符用于操作二进制位
- 成员运算符用于测试序列中是否存在特定元素
- 身份运算符用于比较对象是否相同
- 运算符优先级决定了表达式中运算符的计算顺序
理解运算符和表达式是编写Python程序的基础,它们可以帮助你构建复杂的计算和逻辑判断。
下一章:条件语句
学习如何使用条件语句(if-else)让程序根据条件执行不同的代码块。