Python 运算符优先级
在编程中,运算符是用来执行各种数学或逻辑操作的特殊符号。在 Python 中,我们可以使用各种运算符来执行各种操作,如算术运算、赋值运算、比较运算、逻辑运算等。每个运算符都有一个优先级,它们的优先级决定了它们在表达式中的执行顺序。本文将详细介绍 Python 中各种运算符的优先级,并以示例代码说明。
1. 算术运算符的优先级
下表显示了 Python 中常用的算术运算符的优先级,按照从高到低的顺序排列:
运算符 | 描述 |
---|---|
() |
括号运算 |
** |
幂运算符 |
* / % |
乘、除、取模 |
+ - |
加、减 |
示例代码如下:
a = 10
b = 5
c = 2
result = a + b * c
print(result) # 输出:20,因为乘法优先级高于加法
result = (a + b) * c
print(result) # 输出:30,因为括号优先级高于乘法
运行结果:
20
30
2. 比较运算符的优先级
下表显示了 Python 中常用的比较运算符的优先级,按照从高到低的顺序排列:
运算符 | 描述 |
---|---|
< <=v |
小于、小于等于 |
> >= |
大于、大于等于 |
== != |
等于、不等于 |
is |
身份运算符 |
示例代码如下:
a = 10
b = 5
c = 10
result = a < b != c
print(result) # 输出:False,因为 a 不小于 b,并且 b 不等于 c
result = a < (b != c)
print(result) # 输出:True,因为 b 不等于 c 的结果为 True,而 a 小于 True
运行结果:
False
True
3. 逻辑运算符的优先级
下表显示了 Python 中常用的逻辑运算符的优先级,按照从高到低的顺序排列:
运算符 | 描述 |
---|---|
not |
逻辑非 |
and |
逻辑与 |
or |
逻辑或 |
示例代码如下:
a = True
b = False
result = not a or b and a
print(result) # 输出:False,因为 not 优先级高于 and 和 or
result = ((not a) or b) and a
print(result) # 输出:True,因为括号优先级高于 and 和 or
运行结果:
False
True
4. 位运算符的优先级
下表显示了 Python 中常用的位运算符的优先级,按照从高到低的顺序排列:
运算符 | 描述 |
---|---|
~ |
按位取反 |
<< |
左移 |
>> |
右移 |
& |
按位与 |
^ |
按位异或 |
| |
按位或 |
示例代码如下:
a = 5
b = 3
result = ~a << b >> 1 & a ^ b | a
print(result) # 输出:-3
result = (((~a) << b) >> 1) & a ^ b | a
print(result) # 输出:-3
运行结果:
-3
-3
5. 赋值运算符的优先级
下表显示了 Python 中常用的赋值运算符的优先级,按照从低到高的顺序排列:
运算符 | 描述 |
---|---|
= |
赋值运算符 |
+= |
加法赋值运算符 |
-= |
减法赋值运算符 |
*= |
乘法赋值运算符 |
/= |
除法赋值运算符 |
// = |
取整除赋值运算符 |
%= |
取模赋值运算符 |
**= |
幂赋值运算符 |
&= |
按位与赋值运算符 |
^= |
按位异或赋值运算符 |
|= |
按位或赋值运算符 |
<<= |
左移赋值运算符 |
>>= |
右移赋值运算符 |
示例代码如下:
a = 3
b = 5
a += b
print(a) # 输出:8
a **= b - 3
print(a) # 输出:512
运行结果:
8
512
6. 其他运算符的优先级
除了上述运算符外,Python 还有其他一些运算符,如成员运算符(in、not in)、身份运算符(is、is not)、索引运算符([])、切片运算符([:])等。它们的优先级与其在表达式中出现的顺序一致。示例代码如下:
list1 = [1, 2, 3, 4]
list2 = [1, 2, 3, 4]
result = list1 is list2
print(result) # 输出:False,因为 list1 和 list2 是不同的对象
result = 1 in list1 or 2 not in list2
print(result) # 输出:True,因为 1 在 list1 中,且 2 不在 list2 中
运行结果:
False
True
总结
Python 中的运算符有不同的优先级,它们的优先级决定了它们在表达式中的执行顺序。正确理解和使用运算符的优先级可以帮助我们编写更高效和准确的代码。在编写复杂的表达式时,可以使用括号来控制运算符的优先级,以免产生误解或错误的结果。