9.Python基础篇-逻辑运算
算术运算符
除+,-,*,/以外,还有%,**,//。
%:取模 - 返回除法的余数 。
print(3 % 2) 结果: 1
**:幂 - 返回x的y次幂
print(10 ** 2) # 表示10的2次方 结果: 100
//:取整除 - 往小的方向取整数
print(9 // 2) print(-9 // 2) 结果: 4 -5
比较运算符
==、!=、>、<、>=、<=,比较简单,不再赘述。注意返回值为布尔。
逻辑运算符
逻辑运算的优先级
在没有括号的情况下:not > and > or 同一优先级按照从左至右的顺序计算。
int转换为bool,bool只有真假两个值,所以数字0转换为bool就等于false,非零数字转换为bool就等于True。
NOT
布尔"非" 。如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
print(not 1 == 1) print(not 1 == 2) 结果: False True
AND
print(1 and 2)#结果为2 print(2 and 1)#结果为1 print(0 and 2)#结果为0 print(0 and 100)#结果为0 结论:and 和 or 相反。 前面为真,返回后面;前面为假,则返回前面的 print(1 > 2 and 2 > 1)#1>2为假,所以返回前面的结果:False print(2 > 1 and 1 >2)#2>1为真,所以返回后面的结果:False
OR
print(1 or 2)#结果为1 print(2 or 1)#结果为2 print(0 or 2)#结果为2 print(0 or 100)#结果为100 结论:前面为真,返回前面的;前面为假,则返回后面的 print(1 > 2 or 2 > 1)#1>2为假,所以返回后面的:True(2>1=True) print(2 > 1 or 1 > 2)#2>1为真,所以返回前面的结果:True 结论:数字会返回数字,而逻辑运算只有True,False。
赋值运算符
=:赋值。右边赋值给左边。
+= :先相加,后赋值。
-= :先相减,后赋值。
*= :先相乘,后赋值。
/= :先相除,后赋值
%= :先取模,后赋值
**= :先求幂,后赋值
//= :先整除,将求出的商赋值给左边
:= :海象运算符。在表达式中同时进行赋值和返回赋值的值
a = 1 #将1赋值给a print(a) # 1 b = 1 b += 2 print(b) # 3 c = 2 c += 1 print(c) # 3 d = 3 d *= 2 print(d) # 6 e = 4 e /= 3 print(e) # 1.3333333333333333 f = 5 f %= 2 print(f) # 1 g = 6 g **= 2 print(g) # 36 h = 6 h //= 2 print(h) # 3 # 传统写法 n = 10 if n > 5: print(n) # 使用海象运算符 if (n := 10) > 5: print(n) # 可以减少代码的重复
成员运算符
in :如果在指定的序列中找到值返回 True,否则返回 False。
not in :如果在指定的序列中没有找到值返回 True,否则返回 False。
身份运算符
is :判断两个标识符是不是引用自一个对象
is not :判断两个标识符是不是引用自不同对象
位运算符
& :按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0.(a & b) 输出结果 12 ,二进制解释: 0000 1100
| :按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。(a | b) 输出结果 61 ,二进制解释: 0011 1101
^ :按位异或运算符:当两对应的二进位相异时,结果为1.(a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ :按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1。(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<< :左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。a << 2 输出结果 240 ,二进制解释: 1111 0000
>> :右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。a >> 2 输出结果 15 ,二进制解释: 0000 1111
is 与 == 的区别
is比较的是内存地址;==比较的是value是否相等
a = [1, 2, 3] b = a c = [1, 2, 3] # 使用is比较 print(a is b) # True,因为a和b指向同一个对象 print(a is c) # False,因为a和c虽然内容相同,但指向不同的对象 # 使用==比较 print(a == c) # True,因为a和c的内容相同