定义:有特殊计算规则的符号
操作数:参与运算的数据
运算符:N元运算符(有几个操作数参与运算就是几元运算符)
表达式:运算符和操作数结合起来的计算式
1.算数运算符 + - * / // % **
//向下取整
%取模运算
余数=被除数-除数*商(商向下取整)
取模运算,符号跟除数相同。
取余 结果是浮点类型
取余运算如果商是正数,那么仍然是商向下取整
取余运算如果商是负数,那么向上取整
取余运算,结果符号和被除数相同。
2.比较运算符(关系运算符)
返回值是布尔类型
== > < <= >= !=
== 比较左右内容是否相等
对于所有的数据类型来说,内容相等的==返回True,对象不一定相等
数值、字符串、字节:== 和 is几乎一样
链式比较
链式比较也支持短路,按从左到右的顺序,先比较第一个表达式,如果第一个表达式返回Flase,则后面的比较不再进行
3.身份运算符
Is is not
is代表对象是否是一个(内存地址是否是一个)
Id()—能够返回对象的内存地址
对于数值、字符串、字节这种不可变类型(基于内存的类型)来说,相同的内容是同一个对象。
如果is返回Ture,==一定返回True;如果==返回True,is不一定返回True
4.逻辑运算符
返回值可能是布尔类型,也可能是计算值。
(1)
and 与 左右两侧都是True,返回True,否则返回Flase
Or 或 左右两侧都是Flase,返回Flase,否则返回True
(2)and 和 or左右两侧是其他类型
返回两个表达式中的一个
第一个表达式返回“abc”,第二个返回“0”
对于or来说,第一个表达式如果是True,则结果返回第一个表达式,否则返回第二个表达式
第一个表达式返回“3”,第二个表达式返回“abc”
短路现象
and:当第一个表达式为Flase,后面的表达式不执行
or:当第一个表达式为True,后面的表达式不执行
返回值是None(Ture后面表达式继续执行,print方法返回的都是None)
and的优先级高于or
5.位运算符
返回值:十进制
(1)原码,反码和补码
正数:原码反码补码都是原来的二进制
负数:原码(正数二进制,最高位取1)
反码 除符号位外,其余取反
补码 反码+1
计算机中存储以补码形式存储数据,所有的运算都是使用补码进行运算
如果计算的结果是负数(仍然是补码)—-变回原码:补码+1
(2)位运算
& 按位与 如果都是1,返回1,否则返回0
显示一个数的补码,与相同位数的1进行按位与(只是显示)
| 按位或 如果有一个为1,结果为1,否则为0
^ 按位异或 相同为0,不同为1
~ 按位取反 包括符号位
<< 左位移
右侧以0填充,左侧在64位机上不会溢出
左位移一位,相当于*2(正数负数都是*2的n次幂)(n是位移的位数,两位时n=2)
右位移 如果能够整除,相当于/2,如果不能取整,相当于/2后向下取整
正数填充0
负数填充1
移动多位: 当有溢出直接转为高位机存储,符号位拿到最前,中间什么也不用填充
原理:正数补0,负数补1(-27在16位机上的表示,列出来加深理解)
6.赋值运算符
= += -= = /= %= *=
7.成员运算符 in not in
是否是当前序列中的元素
8.运算符的优先级:()调整优先级, 没有[] ,{}
算数运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
先比较运算1==3是Flase,2==2是True,然后or逻辑,返回True,print(y)返回值是True