Python运算符优先级

Python运算符优先级v1

在Python中,运算符优先级决定了表达式中各个部分的计算顺序。当多个运算符出现在同一个表达式中时,优先级高的运算符会先被计算。Python的运算符优先级从高到低如下:

  1. 括号 ():括号内的表达式会首先被计算。
  2. 指数运算符 ** **=:指数(幂)计算。<x **= 3 # 等价于 x = x ** 3>
  3. 正负号运算符 +- 和取反运算符 ~:一元运算符,用于改变操作数的符号或进行位取反。
  4. 乘法类运算符 ///(整除)、%*(取模)**:这些运算符用于执行乘法、除法、整除和取模操作。
  5. 加法类运算符 + 和减法类运算符 -:这些运算符用于执行加法和减法操作。
  6. 位移运算符 <<>>:用于执行位左移和位右移操作。
  7. 按位与运算符 &:执行位与操作。
  8. 按位异或运算符 ^:执行位异或操作。
  9. 按位或运算符 |:执行位或操作。
  10. 比较运算符 <=<>>=!===:用于比较操作数的值。
  11. 身份运算符 is is not:检查两个对象是否是同一个对象。
  12. 成员运算符 in not in:检查一个值是否在一个序列中。
  13. 逻辑与运算符 and:执行逻辑与操作。
  14. 逻辑或运算符 or:执行逻辑或操作。

如果同一个优先级的运算符出现在同一个表达式中,Python会按照运算符的结合性来确定计算顺序。大多数情况下,从左到右(从左结合性)计算,但指数运算符和赋值运算符是从右到左(从右结合性)计算的。例如,表达式 a = b = c = 1 会先从右到左计算赋值,最终所有变量 a、b 和 c 都会被赋值为 1。

常见的错误:

x = 2

赋值与比较运算符混淆:=赋值运算、==比较运算
if x = 5:  # 错误的比较运算,应该是 if x == 5:

逻辑运算符的优先级:and优先级高于or
if x > 0 or y > 0 and z > 0:  # 可能不是你想要的逻辑
if (x > 0 or y > 0) and z > 0:  # 正确的逻辑
# print(1 and x **= 1) # 语法错误
print(1 and x) # 2
print(1 or x) # 1

幂运算符与赋值混淆:**=幂赋值运算符、**幂运算符
result = x **= 2  # 语法错误,x 会被赋值为 x 的平方,而 result 将是 x 的原始值
result = x ** 2

递增和递减运算符的位置:+=递增、-=递减,运算符应该放在变量后面
x = x + 1  # 正确  
x += 1    # 正确且简洁   
x = +x+1  #
x = +x 1  # 语法错误

位运算符与逻辑运算符混淆:位运算符(&|^~)、逻辑运算符(notandorif x & y:  # 错误,如果 x 和 y 是整数,这将执行位与操作,而不是逻辑与操作
if x and y:  # 正确,执行逻辑与操作
not>and>or
not 0 and 1 # 1
not 0 or 0 # True
not 0 # True
not 0 and 0 # 0
not 1 and 1 # False
not 1 or 2 # 2

错误的字符串连接:字符串连接应该使用+运算或join()方法
s = "Hello" & "World"  # 错误,Python不支持使用 & 连接字符串  
# 正确的方式  
s = "Hello" + "World"  # 使用 + 运算符  
# 或者  
s = "".join(["Hello", "World"])  # 使用 join() 方法

错误的除法:在Python 3中,/ 运算符执行浮点数除法,而 // 执行整数除法。如果你想要整数除法但在Python 2中使用 /,将会得到一个浮点数结果,这可能导致逻辑错误。
x = 7 / 2  # 在Python 3中,x 的值是 3.5  
x = 7 // 2  # 在Python 3中,x 的值是 3

运算符优先级和结合性对于编写清晰、无歧义的代码非常重要。在编写复杂的表达式时,使用括号来明确指定计算顺序通常是一个好习惯。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

棠越

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值