赋值号(=)前有双目(两个操作数)运算符(+、-、*、/、>>、<<、&、|、^等):
运算赋值的左变量必须已经有初值:
运算赋值是计算机里特有的,这与计算机运算优化有关。简单说,使用运算赋值(例如:a=1 a+=1)比不使用运算赋值(例如:a=1 a=a+1)的运算速度快。至于为什么快,只有你们深入学习电脑知识,才能明白其中的奥妙。
比较运算(>、<、>=、<=、==、!=):
比较运算的结果是逻辑值(真True或假False),一般用于条件转移语句。
计算2<<1+1<<1+1的值:2<<1=4,1<<1=2,4+2+1=7。用Python计算看看:
错了,是32。它是怎样算的呢?2<<1+1<<1+1=2<<2<<2=32,先算加法,再算移位。显然,加法的优先级比移位高。那么我们学过的算符的优先级是如何排列的呢?
Python 部分运算符优先级和结合性 | ||||
运算符说明 | Python运算符 | 优先级 | 结合性 | 优先级顺序 |
小括号 | ( ) | 19 | 无 | 高 |
乘方 | ** | 16 | 左 | |
按位取反 | ~ | 15 | 右 | |
符号运算符 | +(正号)、-(负号) | 14 | 右 | |
乘除 | *(乘)、/(除)、//(整除)、%(求余数) | 13 | 左 | |
加减 | +、- | 12 | 左 | |
位移 | >>(右移)、<<(左移) | 11 | 左 | |
按位与 | & | 10 | 右 | |
按位异或 | ^ | 9 | 左 | |
按位或 | | | 8 | 左 | |
比较运算符 | ==(相等)、!=(不等)、>(大于)、>=(大于等于)、<(小于)、<= (小于等于) | 7 | 左 | |
逻辑非 | not | 4 | 右 | |
逻辑与 | and | 3 | 左 | |
逻辑或 | or | 2 | 左 |
注:结合性就是同级运算符时的计算顺序,左:从左到右计算;右:从右到左计算。
锦囊:括号(),括号应用最广,当你记不清算符的优先级时,务必加上括号()。上面那题如果写成这样 (2<<1)+(1<<1)+1,就会保证结果是7了: