145 lines
3.9 KiB
Markdown
145 lines
3.9 KiB
Markdown
# python3小白课:运算符优先级
|
||
|
||
我们在前面的课程中学习了许许多多的运算符,我们在学习时为了简化,都是最简单的写法来表述它们,有时候一个表达式里面仅出现一个运算符,方便大家理解。而它们如果同时出现在一起,python解释器在解释的时候是有优先级顺序的,我们来看看下面的表格:
|
||
|
||
<table>
|
||
<caption>
|
||
Python 运算符优先级和结合性一览表
|
||
</caption>
|
||
<tbody>
|
||
<tr>
|
||
<th> 运算符说明</th>
|
||
<th> Python运算符</th>
|
||
<th> 优先级</th>
|
||
<th> 结合性</th>
|
||
<th> 优先级顺序</th>
|
||
</tr>
|
||
<tr>
|
||
<td> 小括号</td>
|
||
<td> ( )</td>
|
||
<td> 19</td>
|
||
<td> 无</td>
|
||
<td colspan="1" rowspan="19"> 高<br /> ︿<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> |<br /> | <br /> |<br /> |<br /> 低</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 索引运算符</td>
|
||
<td> x[i] 或 x[i1: i2 [:i3]]</td>
|
||
<td> 18</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 属性访问</td>
|
||
<td> x.attribute</td>
|
||
<td> 17</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 乘方</td>
|
||
<td> **</td>
|
||
<td> 16</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 按位取反</td>
|
||
<td> ~</td>
|
||
<td> 15</td>
|
||
<td> 右</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 符号运算符</td>
|
||
<td> +(正号)、-(负号)</td>
|
||
<td> 14</td>
|
||
<td> 右</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 乘除</td>
|
||
<td> *、/、//、%</td>
|
||
<td> 13</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 加减</td>
|
||
<td> +、-</td>
|
||
<td> 12</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 位移</td>
|
||
<td> >>、<<</td>
|
||
<td> 11</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 按位与</td>
|
||
<td> &</td>
|
||
<td> 10</td>
|
||
<td> 右</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 按位异或</td>
|
||
<td> ^</td>
|
||
<td> 9</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 按位或</td>
|
||
<td> |</td>
|
||
<td> 8</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 比较运算符</td>
|
||
<td> ==、!=、>、>=、<、<= </td>
|
||
<td> 7</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> is 运算符</td>
|
||
<td> is、is not</td>
|
||
<td> 6</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> in 运算符</td>
|
||
<td> in、not in</td>
|
||
<td> 5</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 逻辑非</td>
|
||
<td> not</td>
|
||
<td> 4</td>
|
||
<td> 右</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 逻辑与</td>
|
||
<td> and</td>
|
||
<td> 3</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 逻辑或</td>
|
||
<td> or</td>
|
||
<td> 2</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 逗号运算符</td>
|
||
<td> exp1, exp2</td>
|
||
<td> 1</td>
|
||
<td> 左</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
上面这东西,大家看一看就好,在实际编写代码的过程中,我们需要注意代码的可读性,所以我们一般不需要写那么复杂的多个运算符糅杂在一起的语句,如果有,你可以拆成多行来写,这样阅读起来更加清晰。
|
||
|
||
同时我们可以注意到优先级最高的应该是`()`小括号,因此我们可以完全记不住这张表,使用小括号来将表达式计算顺序来表达清楚,这样更有助于代码的可读性。
|
||
|
||
|
||
|
||
### 单词释义
|
||
|
||
| 单词 | 释义 |
|
||
| --------- | ---------------------------------- |
|
||
| atrribute | 属性 |
|
||
| exp | expression表达式这个单词的简写形式 | |