Python-运算符

1、算术运算符

print(10 + 3.1)  #没有定义变量,直接输出值,下一秒就会被垃圾回收,要想不被垃圾回收,就定义变量
print(10 + 3) 
print(10 / 3)     #结果带小数
print(10 // 3)    #值保留整数部分
print(10 % 3)   #取模、取余数
print(10 ** 3)   #10的3次方


2、比较运算符 >、>=、<、<=、==、!=(不等于)

print(10 > 3)
True
print(10 == 10)
True
print(10 >= 10)
True
print(10 >= 3)
True

 

3、赋值运算符

3.1   =:变量的赋值
3.2   +=:增量赋值
age = 18
age = age + 1  #简写age += 1

3.3   链式赋值
x=10
y=10
z=10
z=y=x=10 #上面简写
print(id(x),id(y),id(z)) #三个id相同,三个变量值的内存地址相同

3.4   交叉赋值
m=10
n=20
print(m,n)

#交换值
temp=m #将m的值重新指向到一个变量上,不然m=n内存中m的值会被垃圾回收
n=temp
print(m,n)
上面的简写:m,n=n,m


3.5   解压赋值

l=[111,222,333,444,555]
mon0,mon1,mon2,mon3,mon4=l #对应的变量名少一个不行
print(mon0,mon1,mon2,mon3,mon4)
111 222 333 444 555

x,y,z,*_=l#取前三个变量值 *代表取得列表后面变量所有的值,赋给_变量,_代表变量不能使用,是占位符
print(x,y,z)

111 222 333

*_,x,y,z=l#取后三个变量值
print(x,y,z)
333 444 555

d={'a':1,'b':2,'c':3}
x,y,z=d #解压字典默认解压出来的是字典的key
print(x,y,z)
a b c

 

4、逻辑运算符

not and or的基本使用

4.1  not:就是把紧跟其后的那个条件结果取反

      not与紧跟其后的那个条件是一个不可分割的整体

print(16 > 13)
True
print(not 16 > 13)#16 > 13 条件判断为True,然后将条件结果True取反,就是False
False
print(not True)
False
print(not False)
True
print(not 10)    #10(代表隐式布尔值的True),然后将条件结果True取反,就是False
False
print(not 0)
True
print(not None)
True
print(not '')
True

 

4.2  and:逻辑与,and用来连接左右两个条件,两个条件同时为True,最终结果才为真

print(True and 10 >3)
True
print(True and 10 >3 and 0)
0

 

4.3  or:逻辑或,or用来连接左右两个条件,两个条件但凡有一个为True,最终结果就为True

      两个条件都为False的情况下,最终结果才为False

print(3 > 2 or True)
True
print(10 or False or 3 != 2)
10

 

4.4  短路运算:偷懒原则,偷懒到那个位置,就把当前位置的值返回

print(10 > 3 and 10)
10 #偷懒到10这个位置,就把当前位置的值返回。
     #其是10是隐式布尔值,代表True
10 > 3 and 10 and 0 and 10 or 10 > 3 and 1==1
    #遇到and和or同时存在,使用优先级()把and括起来
print((10 > 3 and 10 and 0 and 10) or (10 > 3 and 1==1))

True #or右边的条件为True。两个条件但凡有一个为True,最终结果就为True

 

4.5  not and or的优先级

优先级not>and>or

如果单独就只是一串and连接,或者单独就只是一串or连接,按照从左到有的顺序依次运算即可

如果是混用,则需要考虑优先级了

#不用括号和使用括号括起来的优先级是一样
res=3 > 4 and not 4 > 3 or 1==3 and 'x'=='x' or 3 > 3
res=(3 > 4 and (not 4 > 3)) or (1==3 and 'x'=='x') or 3 > 3

先给not带上括号(not 4 > 3),在给and带上括号(3 > 4 and (not 4 > 3)) (1==3 and 'x'=='x')
           3>4是Flase                       1==3是Flase
比较(3 > 4 and (not 4 > 3)) or (1==3 and 'x'=='x') or 3 > 3

           Flase                       or          Flase             or 3 > 3  所以最后的结果是False

 

这种以后要使用括号括起来,要么剩下and要么剩下or在进行逻辑运算
res=3 > 4 and ((not 4 > 3) or 1==3) and ('x'=='x' or 3 > 3) 剩下and
res=(3 > 4 and (not 4 > 3)) or (1==3 and 'x'=='x') or 3 > 3 剩下or

 

5、成员运算符

5.1 in

print("llj" in "hello llj") #判断一个子字符串是否存在于一个大字符串中
True
print("l" in "hello llj") #判断一个子字符串是否存在于一个大字符串中
True
pirnt(111 in [111,222,333]) #判断元素是否在于列表
True
pirnt'k'in {"k":'llj','k1':'long','k2':'ji'} #字典判断key是否存在于字典
True

5.2 not in
print("llj" not in "hello llj") #推荐使用
False
print(not "llj" in "hello llj")#逻辑同上,但语义不明确,不推荐
False

 

6、身份运算符

is #比较左右两个值身份id是否相等 

id:反映的是变量值的内存地址,内存地址不同id则不同

>>> name='llj'
>>> print(id(name))
139819428247904
>>> n='llj'
>>> print(id(n))
139819428247904

上面变量名name和n所对应的内存地址是相同的

>>> print(name is n)
True
>>> print(name == n)
True

所以id相同则值相同

 

 

posted @ 2020-07-10 10:21  梁博客  阅读(79)  评论(0)    收藏  举报