python 特殊符号 优先执行,运算符优先级 —— Python教程

本节教程将讲解 Python 运算符的优先级和关联性,在这之前你应该理解了 Python 运算符。

对于表达式,Python 解释器将处理优先级更高的运算符,并且除了指数运算符(**)外,几乎所有运算符的处理方式都从左到右执行。

运算符优先级

工作方式

当我们将值、变量、运算符和函数调用放在一起时,就会形成表达式。当表达式执行完后,Python 解释器就会把它认为是有效的表达式。

像这样:

>>>3 + 4

7

复制代码

3 + 4 是一个表达式,它包含一个运算符和两个操作数。所以,一个复杂的语句可以包含多个运算符。为了执行复杂的表达式,Python 需要列出运算符的优先级,就是要控制程序操作的顺序。

优先级列表

下面是一个复合表达式包含多个运算符的例子:

# 先做乘法再做加法结果就是 17

5 + 4 * 3

复制代码

也可以使用括号 () 更改操作顺序,括号比算数运算符优先级更高:

# 先做括号内加法再做乘法结果是 27

(5 + 4) * 3

复制代码

下面用表格列出运算符从高到低的优先级:

运算符

用法

{ }

括号(分组)

f(args...)

函数调用

x[index:index]

切片

x[index]

索引值

x.attribute

属性

**

指数

~x

取反

+x,-x

正、负值

*、/、%

乘、除、求余

+、-

加、减

<>

左移、右移

&

按位 AND

^

按位 XOR

|

按位 OR

is、not、in、is、is not、< 、<=、>、>=、<>、!=、==

比较、算数、身份

not x

布尔 NOT

and

布尔 AND

or

布尔 OR

lambda

lambda 表达式

关联运算符

上表每组可以有多个运算符,这意味着此组运算符的优先级都相同。所以当多个运算符有相同优先级时,它们之间的关联性就决定了最后的执行顺序。

处理关联性

当有多个相同优先级运算符一同处理时,除指数(**)外,Python 都将按照从左到右的顺序依次执行。

举个例子:

# 具有相同优先级,从左到右执行结果为 1

print(4 * 7 % 3)

# 括号有更高优先级,执行结果为 0

print(2 * (10 % 5))

复制代码

提到过其中指数(**)运算符不同,它是按照从右向左顺序执行:

# 从右到左执行结果为 256

print(4 ** 2 ** 2)

# 括号有更高优先级,但是执行结果还会为 256

print((4 ** 2) ** 2)

复制代码

非关联运算符

Python 中其实还有一些不支持关联性的运算符,例如赋值运算符和比较运算符。所以针对这些非关联运算符有特殊的规则,这就需要我们特别记忆。

例如表达式 5 < 7 < 9 不能理解成 (5 < 7) < 9 或 5 < (7 < 9),而是应该看成 5 < 7 and 7 < 9 且从左到右求值。

还有对语法的支持,像 a = b = c 这样的赋值运算符是可执行的,但是像 a = b += c 就会出现错误。

x = 11, y = 12, z = 13

# 不正确的表达式

# 非关联运算符

# 错误 -> SyntaxError: invalid syntax

x = y += 12

复制代码

(完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值