Python运算符优先级
所有的数学运算都是从左向右进行的,Python 语言中的大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外,它们是从右向左结合的,也就是说,它们是从右向左运算的。
乘法和加法是两个可结合的运算符,也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响结果。
运算符有不同的优先级,所谓优先级就是在表达式运算中的运算顺序。下表中列出了包括分隔符在内的所有运算符的优先级顺序。
<table><caption> 运算符的优先级</caption><tbody><tr class="firstRow"><th>运算符说明</th><th>Python运算符</th><th>优先级</th></tr><tr><td>索引运算符</td><td>x[index]或x[index:index2[:index3]]</td><td>18、19</td></tr><tr><td>属性访问</td><td>x.attrbute </td><td>17</td></tr><tr><td>乘方</td><td>**</td><td>16</td></tr><tr><td>按位取反</td><td>~</td><td>15</td></tr><tr><td>符号运算符</td><td> 或-</td><td>14</td></tr><tr><td>乘、除</td><td>*、/、//、%</td><td>13</td></tr><tr><td>加、减</td><td> 、-</td><td>12</td></tr><tr><td>位移</td><td>>>、<<</td><td>11</td></tr><tr><td>按位与</td><td>&</td><td>10</td></tr><tr><td>按位异或</td><td>^</td><td>9</td></tr><tr><td>按位或</td><td>|</td><td>8</td></tr><tr><td>比较运算符</td><td>==、!=、>、>=、<、<= </td><td>7</td></tr><tr><td>is运算符</td><td>is、is not</td><td>6</td></tr><tr><td>in运算符</td><td>in、not in</td><td>5</td></tr><tr><td>逻辑非</td><td>not</td><td>4</td></tr><tr><td>逻辑与</td><td>and</td><td>3</td></tr><tr><td>逻辑或</td><td>or</td><td>2</td></tr></tbody></table>根据表中运算符的优先级,我们分析 4 4<<2 语句的执行结果。程序先执行 4 4 得到结果 8,再执行 8<<2 得到 32。如果使用“()”就可以改变程序的执行顺序,比如 4 (4<<2),则先执行 4<<2 得到结果16,再执行 4 16 得到 20。
虽然 Python 运算符存在优先级的关系,但并不推荐过度依赖运算符的优先级,因为这会导致程序的可读性降低。因此,在这里要提醒读者:
不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把它分成几步来完成。
不要过多地依赖运算符的优先级来控制表达式的执行顺序,这样可读性太差,应尽量使用“()”来控制表达式的执行顺序。
您可能感兴趣的文章:
VBScript 运算符
python中x的平方怎么写
python表达式是什么
Python运算符优先级
VBScript的运算符
php正则表达式完全教程(三)
php正则表达式完全教程三
php中运算符的优先级是什么?
怎么使用python进行整除取余求幂
php运算符的优先级是什么?