- 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