• Python
  • python常见的运算符的运算优先级

  • @ 2025-1-7 20:11:29
  1. 括号(()
    • 优先级最高。括号用于改变运算的自然顺序,表达式中位于括号内的部分会优先计算。例如:(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. 幂运算符(**
    • 用于计算一个数的幂次方。例如2**3表示2的3次方,计算过程是2*2*2 = 8
    • 当幂运算与其他运算符一起使用时,它在括号之后优先级较高。如3*2**2,先计算幂运算2**2 = 4,再计算乘法3*4 = 12
  3. 一元运算符(正号+、负号-、按位取反~
    • 正号+和负号-:用于表示正数和负数,或者改变一个数的符号。例如-5是一个负数,+3明确表示正数(通常正号可以省略)。在运算中,如-2 * 3,先应用负号,得到-6
    • 按位取反~:是对整数的二进制表示进行按位取反操作。例如,对于整数5(二进制表示为0b0101),~5的结果是-6(二进制表示为0b1010,在有符号整数的补码表示下)。它的优先级高于乘法等运算符。
  4. 乘法(*)、除法(/)、取模(%)、地板除(//
    • 乘法*:用于计算两个数的乘积。例如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
  5. 加法(+)和减法(-
    • 加法+:用于计算两个数的和。例如3 + 7 = 10
    • 减法-:用于计算两个数的差。例如8 - 3 = 5。它们的优先级相同,在表达式中按照从左到右的顺序计算,如5+3 - 2,先计算加法5+3 = 8,再计算减法8 - 2 = 6
  6. 移位运算符(左移<<、右移>>
    • 左移<<:将一个数的二进制表示向左移动指定的位数,相当于乘以2的相应幂次方。例如,2 << 3,2的二进制是0b0010,左移3位后得到0b1000,也就是十进制的16,相当于2*2^3
    • 右移>>:将一个数的二进制表示向右移动指定的位数,相当于除以2的相应幂次方并向下取整。例如,16 >> 2,1的二进制是0b10000,右移2位后得到0b0010,也就是十进制的4,相当于16/2^2(向下取整)。它们的优先级高于比较运算符。
  7. 按位与(&)、按位异或(^)、按位或(&
    • 按位与&:对两个整数的二进制表示逐位进行与操作。例如,0b1010 & 0b1100,按位与的结果是0b1000
    • 按位异或^:对两个整数的二进制表示逐位进行异或操作。例如,0b1011 ^ 0b0110,结果是0b1101
    • 按位或|:对两个整数的二进制表示逐位进行或操作。例如,0b1001 | 0b0101,结果是0b1101。这些运算符的优先级高于比较运算符。
  8. 比较运算符(==!=<><=>=
    • 用于比较两个值的大小或相等关系。例如3 > 2结果为True4 == 4结果为True5!= 3结果为True。比较运算符的优先级高于布尔运算符。
  9. 布尔运算符(逻辑与and、逻辑或or、逻辑非not
    • 逻辑非not:用于对布尔值取反。例如not True结果为Falsenot False结果为True
    • 逻辑与and:当两个操作数都为True时,结果为True,否则为False。例如True and False结果为False3 > 2 and 4 > 3结果为True
    • 逻辑或or:只要两个操作数中有一个为True,结果为True。例如True or False结果为True2 < 1 or 3 > 2结果为True
  10. 赋值运算符(=+=-=*=/=%=//=**=&=|=^=<<=>>=
  • 赋值运算符=用于将一个值赋给一个变量。例如x = 5,将5赋值给变量x。
  • 复合赋值运算符(如+=等)是先进行运算,然后再赋值。例如x = 3x += 2等价于x = x + 2,执行后x的值为5。赋值运算符的优先级较低,通常是在表达式的最后一步进行赋值操作。

1 条评论

  • @ 2025-1-7 20:12:04
    1. 优先级总览
      • 在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
    2. 示例说明优先级影响
      • 考虑表达式3 + 4 * 2。根据优先级,先执行乘法4*2 = 8,然后执行加法3+8 = 11
      • 如果想要先执行加法,可以使用括号,如(3 + 4)*2。首先计算括号内的加法3 + 4 = 7,然后执行乘法7*2 = 14
    3. 注意事项
      • 为了使代码更易读,即使在优先级符合预期的情况下,也可以适当使用括号来明确运算顺序。这样可以避免其他人(包括自己在以后查看代码时)误解代码的意图。
      • 在复杂的表达式中,仔细考虑运算符的优先级是非常重要的,否则可能会得到意想不到的结果。
    • 1