运算符优先级遵循的规则为:算术运算符的优先级最高,其次是位运算符,成员测试运算符,关系运算符,逻辑运算符等,算术运算符遵循“先乘除,后加减”的基本运算原则。
记住,圆括号是明确和改变表达式运算顺序的利器,在适当位置使用圆括号可以使得表达式的含义更加明确。
Python常用运算符
运算符类型 | 运算符 | 功能 |
算术运算符 | + | 算术加法,列表,元组,字符串合并与连接,正号 |
- | 算术减法,集合差集,相反数 | |
* | 算术乘法,序列重复 | |
/ | 相当于数学里的除法 | |
// | 求整商 | |
% | 求余数,字符串格式化 | |
** | 幂运算 | |
关系运算符 | <,<=,>,>=,==,!= | 大小或集合包含关系比较,依次为小于,小于等于,大于,大于等于,等于,不等于 |
逻辑运算符 | and | 逻辑与 |
or | 逻辑或 | |
not | 逻辑非 | |
位运算符 | | , ^ , & , << , >> , ~ | 依次为位或,位异或 ,位与,左移位,右移位,位求反 |
身份运算符 | is | 对象同一性测试,即测试是否为同一个对象或内存地址是否相同 |
成员资格运算符 | in | 成员测试 |
[] | 下标运算符 | |
. | 属性访问 |
-
算术运算符
1) + 运算符除了用于加法运算,还可以用于列表,元组,字符串的连接,但不支持不同类型对象之间相加或连接
>>>[1,2,3]+[4,5,6]
[1,2,3,4,5,6]
>>>(1,2,3)+(4,)
(1,2,3,4)
>>>"abcd"+"123"
"abcd123"
2) * 运算符除了表示算术乘法,还可用于列表,元组,字符串这几个序列类型与整数的乘法,表示序列元素的重复,生成新的序列对象。字典和集合不支持与整数的相乘,因为其中的元素是不允许重复的。
<<<True*3
3
<<<[4,5,6]*3
[4,5,6,4,5,6,4,5,6]
3) 运算符/和 // 在Python中分别表示算术除法和算术求整商
>>>5/2
2.5
>>>7//4 #如果两个操作数都是整数,结果为整数
1
>>>7.0//4 #如果操作数中有实数,结果为实数形式的整数值
1.0
4)**运算符表示幂乘,等价于内置函数pow()
>>>3**2 #等价于3的2次方,相当于pow(3,2)
9
5)% 运算符可以用于整数或实数的求余数运算(结果符号与除数相同),还可以用于字符串格式化。
>>>15%7
2.关系运算符
Python关系运算符可以连用,含义与人们日常理解完全一致。使用关系运算符的一个最重要的前提是:操作数之间必须可比较大小。
>>>"hello">"world" #比较字符串大小无意义
False
>>>{1,2,3}<{1,2,3,4} #测试是否子集
True
3.成员运算符in
成员运算符in用于成员测试,即测试一个对象是否为另一个对象的元素。
>>>1 in [1,2,3]
True
4.同一性运算符is
is 是用来测试两个对象是否同一个,如果是则返回True ,否则返回False。如果量对象是同一个,两者具有相同的内存地址。
>>>5 is 5
True
>>>a=[10,10,10]
>>>a[0] is a[1] #基于值的内存管理,同一个值在内存中只有一份
True
5.位运算符和集合运算符
位运算符只能用于整数,其内部执行过程为:首先将十进制整数转换为二进制数,然后右对齐,必要时左侧补0,按位进行运算,最后再把计算结果转换为十进制整数。
位与运算规则为1&1=1 , 1&0=0 , 0&1=0 , 0&0=0
位或运算规则为1|1=1 , 1|0=1 , 0|1=1 , 0|0 =0
位异或运算规则 1^1= 0^0=0 , 1^0 =0^1 =1
二进制详解:
比如3这个十进制数,转化为二进制为 000011,从右向左依次代表2的0次方 ,2的1次方,所以3=2+1.
使用位运算符计算时,要将两个十进制数字转化为2进制,然后上下依次对齐,根据运算规则写出新的二进制数,再将其转化为十进制。
另外,左移位时右侧补0,每左移一位,相当于乘以2;右移位时左侧补0,每右移一位相当于整除2。
>>>3<<2 #把3左移2位
12
>>>3&7 #3:000011
3 7:000111
位与运算后 : 000011=3
集合的交集,并集,对称差集等运算借助于位运算符来实现,差集则使用减号运算符实现(注意,并集运算符不是加号)
>>>{1,2,3} | {3,4,5} #并集,集合自动去除重复元素
{1,2,3,4,5}
6.逻辑运算符
逻辑运算符and,or ,not 常用来连接条件表达式构成更加复杂的条件表达式,并且and 和 or 具有惰性求值或逻辑短路的特点,当连接多个表达式时只计算必须要计算的值。 另外要注意的是,运算符and 和 or 不一定会返回 True 或False ,而是得到最后一个被计算的表达式的值,但是运算符not 一定会返回True 或False。
or只找True
>>> 1>3 and b>2 #此时未定义变量b
False
>>> 3<5 and a>3 #3<5为True,不用计算后面表达式
True
>>>3 and 5 #最后一个计算的表达式的值作为整个表达式的值
5
>>>3 is not 5 #not的计算结果只能是True 或False
True
微信关注公众号学不思蜀,各种学习资料应有尽有