python当中没有自增和自减的概念
算术运算符:
+ 加
- 减
* 乘
/ 除
% 取余
// 整除
** 平方
赋值运算符:就是给变量赋值的
= 赋值 a = 1 --- 把数字1赋值给一个变量a
+= 加等于 a += 1 和 a = a + 1 时一样
-=
*=
/=
%=
//=
**=
比较(关系)运算符:最终会产生一个bool值
== 等于
>
<
<= 小于或者等于
>= 大于或者等于
!= 不等于
例:b += b >= 1 -- b = b + b >= 1 --- b = b + True --- b = b + 1 --- b = 2
“a” > "b" --- false ord("a") = 97 ord("b") = 98 --- 97 > 98 --- False ord("a")表示求出“a”的AsscII的编码
“abc” < "abd" --- True --- 两个字符串会对应字符的Asscll编码进行比较,只要碰到第一个不一样的就返回结果。
[1,2,3] > [2,3,4] -- False --- 和两个字符串比较相类似,也是对应位置上的数字进行比较
除此之外,元组和set集合也可以比较,但是set集合比较大小没有什么意义,因为set是无序的。
但是dict不能这样比较 {"a":2} >{"b":1} -- 会报错
逻辑运算符:操作的是bool类型
and 且 True and True --- True
or 或 True or False --- False
not 非 not False --- True not not False --- False
1 and 1 --- True and True --- True --- 1 1 and 1 的最终结果为1
int和float:0为False,其他为True
str类型:空字符串为False,其他为True
list,set,dict,tuple:为空的时候是False,其他情况为True
1 or 2 --- 返回1 因为1为True, or 后面的值不管是什么整体都返回True,所以直接顺手就把1给你返回了,or后面的这个值不会管
0 and "" --- 返回0 因为0为False,不管and后面是什么整体都返回False,所以不会看and后面的,直接返回0
1 and 2 --- 返回2 ,因为1为True,True and 判断不出来,所以要看后面的,后面的为2,也为True,顺手把2直接返回
0 or "" --- 返回"" ,因为0为False,False or判断不出来,所以要看后面的,后面的为"",也为False,顺手直接把""返回
成员运算符:判断一个元素是否另外一组元素里面,返回值为bool类型
not in 不在
in 在
a = 1
b = 6
a in [1,2,3,4,5] --- True
b in [1,2,3,4,5] --- False
a not in [1,2,3,4,5] --- False
b not in [1,2,3,4,5] --- True
对str,tuple,set都适用
"h" in "hello" --- True
如果是字典:
b = 'a'
b in {"c":1} --- False
b = 1
b in {'c':1} --- False
b ='c'
b in {'c':1} --- True
判断一个元素是不是在字典中,判断的是key而不是value
身份运算符:返回结果为bool类型
is not
is
1 == 1.0 --- True
1 is 1.0 --- False
== 和 is的区别:== 比较的是值相等,而is比较的两个变量的身份是否相等,身份相等可以理解为内存地址是否相等,在python中用id()函数可以得到内存地址
a = {1,2,3}
b = {2,1,3}
a == b --- True 因为set集合是无序的
a is b --- False 因为a和b的内存地址是不一样的
c = (1,2,3)
d = (2,1,3)
c == d --- True 元组是有序的
c is d --- False 因为c和d的内存地址是不一样的
扩展:对象的三个特征:值(value),身份(is)和类型(type)
值用==判断 身份用is判断 类型用isintance判断
为什么判断类型要用isinstace而不是type呢? --- 因为ytype并不能判断一个变量的子类属于哪种类型,而isinstance可以
判断一个变量是否属于一个类型 --- isinstance(变量名,类型)
a = 1
isinstance(a,int) --- True
isinstance的另外一种用法:
isinstance(a,(int,str,float)) --- True
第一个参数是变量名,第二个参数是一个元组,这个元组里面可以装任意多个,表示a如果是元组里面的任何一个类型,都将返回True
位运算符:把这个数当作二进制数进行运算
& 按位与 --- 同1为1,否则为0
| 按位或 --- 同0为0,否则为1
^ 按位异或
~ 按位取反
<< 左移
>> 右移