bool数据能够用取反运算符_脚本语言系列之Python | Python运算符

本文介绍了Python中的各种运算符,包括算术、比较、赋值、位、逻辑、成员、身份和运算优先级。详细讲解了每种运算符的功能和用法,如加法、减法、赋值、位运算符(如按位与、按位异或、按位取反)以及逻辑运算符(与、或、非)。同时,还提到了运算符的优先级和成员、身份运算符的使用。
摘要由CSDN通过智能技术生成

c10821d6b841127b483d83bc811b9146.png
Python是做自动化工作首选的一门语言,与更复杂的语言相比,Python 非常便于快速学习、语法很少,具有良好的 可读性,即使测试工程师们没有丰富的编码经验,也能快速学会;Python 的极简风格对于测试自动化具有诸多优势,测试步骤在本质上是呈线性的、一 次执行一个,按顺序执行,配合丰富的插件,非常适合测试脚本的开发。

Python语言支持以下类型的运算符:

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 位运算符
  • 逻辑运算符
  • 成员运算符
  • 身份运算符
  • 运算符优先级

一、算术运算符

1、+

加法运算、序列的连接、表示正数

print(+12+12)
print("abc"+"efg")

2、-

减法运算、表示负数

print(-12-12)

3、*

乘法运算、序列的复制

print(12*2)
print("abc"*2)

4、/

除法运算,精确除法

#/表示精确除法
print(12/3)
print(10/3)

5、//

除法运算,只取整数部分

#也是除法运算,但是只取整部分
print(12//3)
print(10//3)

6、%

取余(取模)运算

print(12%3)
print(10%3)

7、**

幂运算

print(3*3*3)
print(3 ** 5)

#结果是:5
print(2+3*4//2**2)
print((2+3)*4//2**2)

二、比较运算符

对于关系(条件)表达式的结果一定是True或者是False

a=10
b=20
print(a==b) #比较对象a、b是否相等,相等返回True,否则返回False
print(a>=b) #比较对象a是否大于等于b,是则返回True,否则返回False
print(a<=b) #比较对象a是否小于等于b,是则返回True,否则返回False
print(a>b)  #比较对象a是否大于b,是则返回True,否则返回False
print(a<b)  #比较对象a是否小于b,是则返回True,否则返回False
print(a!=b) #比较对象a是否不等于b,是则返回True,否则返回False

三、赋值运算符

python中不支持++、--的运算

1、=

简单的赋值运算符

a =10
print(a)

2、+=

加法赋值运算符

a =10
b = 20.1
a += b  #相当于a = a+b
print(a)

3、-=

减法赋值运算符

a =10 
b = 2 
a -= b  #相当于a = a-b 
print(a)

4、*=

乘法赋值运算符

a =10
b = 2
a *= b  #相当于a = a*b
print(a)

5、/=

除法赋值运算符

a =10
b = 2
a /= b  #相当于a = a/b
print(a)

6、//=

整除赋值运算符

a =10
b = 2
a //= b  #相当于a = a//b
print(a)

7、%=

取模赋值运算符

a =10
b = 2
a %= b  #相当于a = a%b
print(a)

8、**=

幂赋值运算符

a =10
b = 2
a **= b  #相当于a = a**b
print(a)

四、位运算符

按位运算符是把数字看作二进制来进行计算的。

1、有符号处理

对于有符号的数据运算,都是采用补码运算的。

b99e3e5436e41310363d78a2002e88a5.png

对于正数来说:

  • 他的原码、反码、补码是一样的
# 60的原码:00111100
#     反码:00111100
#     补码:00111100
# 13的原码:00001101
#     反码:00001101
#     补码:00001101

对于负数来说:

  • 原码到反码:符号位不变,其他位置0变1,1变0
  • 反码到补码:符号位不变,要求末尾+1
  • 补码到反码:符号位不变,末尾-1
  • 反码到原码:符号位不变,1变0,0变1
#-12的原码:10001100
#-12的反码:11110011
#-12的补码:11110100

2、按位与运算符&

参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

a=60
b=13

#位与运算:&,如果同一位上同为1则为1,否正为0
# 60补码:00111100
# 13补码:00001101
#      &:00001100
#补反原码:00001100-->12
print(a & b)

3、按位或运算符|

只要对应的二个二进位有一个为1时,结果位就为1

a=60
b=13

#位或运算:|,如果同一位上同为0则为0,否正为1
# 60补码:00111100
# 13补码:00001101
#      |:00111101
#补反原码:00111101-->32+16+8+4+1=61
print(a | b)

4、按位异或运算符^

当两对应的二进位相异时,结果为1 ,相同则为0

a=60
b=13

#异或运算:^,如果同一位上相同为0,不同为1
# 60补码:00111100
# 13补码:00001101
#      ^:00110001
#补反原码:00110001-->32+16+1=49

print(a ^ b)

5、按位取反运算符~

对数据的每个二进制位取反,即把1变为0,把0变为1

a=60
b=13

#取反运算:~,0变1,1变0
# 60补码:00111100
#     ~60:11000011
#最高位表示的符号位,1表示负号,0表示正号
# 补码:11000011
# 反码:11000010
# 原码:10111101
# 结果:=-(32+16+8+4+1)

print(~a)

6、左移运算符<<

运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0

a = 12
#  00001100(12的补码)
#  00011000(a<<1的补码、原码)
print(a<<1)#高位抛弃,低位补零

7、右移运算符>>

左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数

a = 12
#  00001100(12的补码)
#  00000110(a>>1的补码、原码)
print(a>>1)#低位抛弃,高位补零

五、逻辑运算符

在python中,逻辑运算的运算数不一定要求全都是bool类型,可以是bool也可以是其他数据类型。

1、逻辑与运算-and

x and y:如果x是false的话,返回值就是false,否则就是y的

print(False  and True)
print(False and False)
print(False and 3)
print("-----------------")

print(True  and True)
print(True and False)
print(True and 3)
print("-----------------")

print(2  and True)
print(2 and False)
print(2 and 3)

2、逻辑或运算-or

x or y:如果x是True,结果就是True,否则返回y的值

print(False  or True)
print(False or False)
print(False or 3)
print("-----------------")

print(True  or True)
print(True or False)
print(True or 3)
print("-----------------")

print("a"  or True)
print(2  or False)
print(2  or 3)

3、逻辑非运算-not

not x:如果x是True,则结果为False;如果x为False,则结果为True

print(not True) #False
print(not False)#True
print(not 0)    #True
print(not None)    #True
print(not "")    #True
print(not [])    #True
print(not {})    #True
print(not 2)    #False
print(not "a")    #False

六、成员运算符

判断某个元素是否是某个数据结构的成员

1、in

判断某个元素是某个迭代(set集合、序列、映射)类型的成员吗?

list1 = [1,2,3,4,5,6,7,8,89,9,0]
str1 = "abcdefsggg"
set1 = {'a','v','d','e'}
dict1 = {"name":"petter","gender":"male"}

print(3 in list1) #True
print(22 in list1) #False
print("-----------------")
print("a" in str1) #True
print("aa" in str1) #False
print("-----------------")
print("name" in dict1) #True
print('petter' in dict1) #False
print("-----------------")
print('a' in set1)  #True
print("-----------------")

2、not in

判断某个元素不是某个迭代(set集合、序列、映射)类型的成员吗?

list1 = [1,2,3,4,5,6,7,8,89,9,0]
str1 = "abcdefsggg"
set1 = {'a','v','d','e'}
dict1 = {"name":"petter","gender":"male"}

print(3 not in list1) #False
print(22 not in list1) #True
print("-----------------")
print("a" not in str1) #False
print("aa" not in str1) #True
print("-----------------")

七、身份运算符

身份运算符用于比较两个对象的存储单元(其实相当于判断对象在内存的存储地址是否相同)

1、is

  • 判断某个变量与两外一个变量是同一个身份(指向的是同一个数据的存储空间)
  • is运算符就相当于是id(a)==id(b),如果引用的是同一个对象则返回 True,否则返回 False
a = 12
b = 12
c = 13
print(id(a))
print(id(b))
print(id(c))
# is运算符就相当于是id(a)==id(b),如果引用的是同一个对象则返回 True,否则返回 False
print(a is b)   #True
print(a is c)   #False

2、is not

  • is not:判断某个变量与两外一个变量不是同一个身份(指向的不是同一个数据的存储空间)
  • is not运算符就相当于是id(a)!=id(b),如果引用的不是同一个对象则返回结果 True,否则返回 False
a = 12
b = 12
c = 13
print(a is not b)   #False
print(a is not c)   #True

八、运算的优先级

在运算符参与混合运算时候,需要关注其优先级,当然最好的办法就是使用小括号来定义其执行的先后顺序。

142cf0745ff5ac072d44007d5568ba14.png

欢迎关注作者,如果觉得写的还不错,就给点个赞同、喜欢、收藏(后续持续更新)。

【全文手打 如需转载 请标注此出处】

bee8957ec0e12a6a705af882907df096.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值