python的运算符

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

^ 按位异或

~ 按位取反

<< 左移

>> 右移

 

posted on 2019-07-25 15:16  递弱代偿  阅读(183)  评论(0编辑  收藏  举报

导航