- Python
python常见的运算符的运算优先级
- @ 2025-1-7 20:11:29
- 括号(
())- 优先级最高。括号用于改变运算的自然顺序,表达式中位于括号内的部分会优先计算。例如:
(3 + 5) * 2,先计算括号内的加法3+5 = 8,然后再计算乘法8*2 = 16。 - 可以嵌套使用括号来明确更复杂的运算顺序,如
((2 + 3) * 4 - 5) / 3。先计算最内层括号2+3 = 5,然后计算乘法5*4 = 20,接着减法20 - 5 = 15,最后除法15/3 = 5。
- 优先级最高。括号用于改变运算的自然顺序,表达式中位于括号内的部分会优先计算。例如:
- 幂运算符(
**)- 用于计算一个数的幂次方。例如
2**3表示2的3次方,计算过程是2*2*2 = 8。 - 当幂运算与其他运算符一起使用时,它在括号之后优先级较高。如
3*2**2,先计算幂运算2**2 = 4,再计算乘法3*4 = 12。
- 用于计算一个数的幂次方。例如
- 一元运算符(正号
+、负号-、按位取反~)- 正号
+和负号-:用于表示正数和负数,或者改变一个数的符号。例如-5是一个负数,+3明确表示正数(通常正号可以省略)。在运算中,如-2 * 3,先应用负号,得到-6。 - 按位取反
~:是对整数的二进制表示进行按位取反操作。例如,对于整数5(二进制表示为0b0101),~5的结果是-6(二进制表示为0b1010,在有符号整数的补码表示下)。它的优先级高于乘法等运算符。
- 正号
- 乘法(
*)、除法(/)、取模(%)、地板除(//)- 乘法
*:用于计算两个数的乘积。例如4 * 5 = 20。 - 除法
/:在Python 3.x中,/执行的是真除法,得到的结果是浮点数。例如7/2 = 3.5。 - 取模
%:用于计算除法的余数。例如9 % 4 = 1,因为9除以4商为2,余数为1。 - 地板除
//:得到的是除法运算结果的整数部分(向下取整)。例如7//2 = 3,它会舍去小数部分。这些运算符的优先级相同,在表达式中按照从左到右的顺序进行计算,例如4 * 3 / 2,先计算乘法4*3 = 12,再计算除法12/2 = 6。
- 乘法
- 加法(
+)和减法(-)- 加法
+:用于计算两个数的和。例如3 + 7 = 10。 - 减法
-:用于计算两个数的差。例如8 - 3 = 5。它们的优先级相同,在表达式中按照从左到右的顺序计算,如5+3 - 2,先计算加法5+3 = 8,再计算减法8 - 2 = 6。
- 加法
- 移位运算符(左移
<<、右移>>)- 左移
<<:将一个数的二进制表示向左移动指定的位数,相当于乘以2的相应幂次方。例如,2 << 3,2的二进制是0b0010,左移3位后得到0b1000,也就是十进制的16,相当于2*2^3。 - 右移
>>:将一个数的二进制表示向右移动指定的位数,相当于除以2的相应幂次方并向下取整。例如,16 >> 2,1的二进制是0b10000,右移2位后得到0b0010,也就是十进制的4,相当于16/2^2(向下取整)。它们的优先级高于比较运算符。
- 左移
- 按位与(
&)、按位异或(^)、按位或(&)- 按位与
&:对两个整数的二进制表示逐位进行与操作。例如,0b1010 & 0b1100,按位与的结果是0b1000。 - 按位异或
^:对两个整数的二进制表示逐位进行异或操作。例如,0b1011 ^ 0b0110,结果是0b1101。 - 按位或
|:对两个整数的二进制表示逐位进行或操作。例如,0b1001 | 0b0101,结果是0b1101。这些运算符的优先级高于比较运算符。
- 按位与
- 比较运算符(
==、!=、<、>、<=、>=)- 用于比较两个值的大小或相等关系。例如
3 > 2结果为True,4 == 4结果为True,5!= 3结果为True。比较运算符的优先级高于布尔运算符。
- 用于比较两个值的大小或相等关系。例如
- 布尔运算符(逻辑与
and、逻辑或or、逻辑非not)- 逻辑非
not:用于对布尔值取反。例如not True结果为False,not False结果为True。 - 逻辑与
and:当两个操作数都为True时,结果为True,否则为False。例如True and False结果为False,3 > 2 and 4 > 3结果为True。 - 逻辑或
or:只要两个操作数中有一个为True,结果为True。例如True or False结果为True,2 < 1 or 3 > 2结果为True。
- 逻辑非
- 赋值运算符(
=、+=、-=、*=、/=、%=、//=、**=、&=、|=、^=、<<=、>>=)
- 赋值运算符
=用于将一个值赋给一个变量。例如x = 5,将5赋值给变量x。 - 复合赋值运算符(如
+=等)是先进行运算,然后再赋值。例如x = 3,x += 2等价于x = x + 2,执行后x的值为5。赋值运算符的优先级较低,通常是在表达式的最后一步进行赋值操作。
1 条评论
-
admin SU @ 2025-1-7 20:12:04
- 优先级总览
- 在Python中,运算符的优先级决定了表达式中运算执行的先后顺序。就像在数学运算中,先乘除后加减一样。以下是Python运算符优先级从高到低的大致顺序:
- 括号:
(),用于改变运算顺序,强制让括号内的表达式先计算。 - 幂运算:
**,用于计算一个数的幂次方,如2**3表示2的3次方,结果为8。 - 一元运算符(正号、负号、按位取反):
+(正号)、-(负号)、~(按位取反)。例如-5,这里的-就是一元负号运算符;~0b101(二进制的101按位取反)。 - 乘法、除法、取模、地板除:
*(乘法)、/(除法)、%(取模)、//(地板除)。例如5 * 3结果为15,7/2结果为3.5,7 % 3结果为1(7除以3的余数),7 // 2结果为3(向下取整的商)。 - 加法和减法:
+(加法)、-(减法)。例如3 + 2结果为5,5-1结果为4。 - 移位运算符:
<<(左移)、>>(右移)。用于二进制位的移动,例如0b10 << 1(二进制10左移1位)结果为0b100。 - 按位与、按位异或、按位或:
&(按位与)、^(按位异或)、|(按位或)。这些运算符用于对二进制位进行逻辑操作,例如0b11 & 0b10结果为0b10。 - 比较运算符:
==(等于)、!=(不等于)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)。比较运算符用于比较两个值的大小关系,结果为布尔值(True或False),如3 > 2结果为True。 - 布尔运算符(与、或、非):
and(逻辑与)、or(逻辑或)、not(逻辑非)。例如True and False结果为False,True or False结果为True,not True结果为False。 - 赋值运算符:
=、+=、-=、*=、/=、%=、//=、**=、&=、|=、^=、<<=、>>=。赋值运算符用于给变量赋值,例如x = 5是将5赋值给变量x,x += 3等价于x = x + 3。
- 括号:
- 在Python中,运算符的优先级决定了表达式中运算执行的先后顺序。就像在数学运算中,先乘除后加减一样。以下是Python运算符优先级从高到低的大致顺序:
- 示例说明优先级影响
- 考虑表达式
3 + 4 * 2。根据优先级,先执行乘法4*2 = 8,然后执行加法3+8 = 11。 - 如果想要先执行加法,可以使用括号,如
(3 + 4)*2。首先计算括号内的加法3 + 4 = 7,然后执行乘法7*2 = 14。
- 考虑表达式
- 注意事项
- 为了使代码更易读,即使在优先级符合预期的情况下,也可以适当使用括号来明确运算顺序。这样可以避免其他人(包括自己在以后查看代码时)误解代码的意图。
- 在复杂的表达式中,仔细考虑运算符的优先级是非常重要的,否则可能会得到意想不到的结果。
- 优先级总览
- 1