写点什么

软件测试| 教你拿捏 Python 运算符(三)

  • 2023-11-15
    北京
  • 本文字数:1869 字

    阅读完需:约 6 分钟

前言

前面两篇文章我们分别介绍了 Python 的算术运算符、比较运算符合和三目运算符,本篇文章我们来介绍 Python 的逻辑运算符、成员运算符以及身份运算符 。

逻辑运算符

老规矩,先列出逻辑运算符列表



Python 逻辑运算符可以用来操作任何类型的表达式,不管表达式是不是 bool 类型;同时,逻辑运算的结果也不一定是 bool 类型,它也可以是任意类型。


逻辑运算符一般和比较运算符结合使用,例如:


print(14 > 6 and 90 > 90) # 14大于6为真,90大于90为false,所以整体为false
复制代码


示例代码如下:


print(3 > 2 and 2 >= 2)  # 返回的是bool类型 True and True -->Trueprint(3 > 2 or 2 > 1)  # 返回的是bool类型 Ture and Tue -->Trueprint(3 > 2 or 2 < 1)  # 返回的是bool类型 Ture and False -->Trueprint(not (3 > 2))  # not True相反结果就是False
a = Trueb = Truec = Falsed = Falseprint(a and b) # Trueprint(a and c) # False
# 连续比较:a>b>c --> a>b and b>c 两者都为True才为Trueprint(3 > 2 > 1) # Trueprint(3 > 2 > 2) # 3>2(True) and 2>2(False)print((3 > 2) > 1) # 加了小括号优先级。True > 1 -->Falseprint(True == 1) # 1不大于1
# 输出非bool型示例
print(100 and 200)print(45 and 0)print("" or "muller")print(18.5 or "muller")--------------------------------------------TrueTrueTrueFalseTrueFalseTrueFalseFalseTrue2000muller18.5
复制代码

成员运算符

成员运算符( in 与 not in)是 Python 独有的运算符(全部都是小写的字母),用于判断对象是否是某个集合的元素之一,非常好用,并且运行速度很快。返回的结果是布尔值类型的 True 或者 False。下面是成员运算符的列表。



示例代码如下:


# 成员运算符in in notname = "moss"
roles = ["刘培强", "图恒宇", "张鹏", "周喆直","moss"]
# 判断moss在roles中则返回Trueprint(name in roles)
# 判断moss不在roles中则返回Trueprint(name not in roles)----------------------------------输出结果如下:TrueFalse
复制代码

身份运算符

身份运算符(is、is not)和成员运算符一样,也是 Python 的特色语法。身份运算符用来判断的两个对象的存储单元是否相同的一种运算符号,身份运算符只有 is 和 is not 两个运算符,返回的结果都是 TRUE 或者 FALSE。下面是身份运算符的列表:



示例代码如下:


a=3b=2c=aprint(a is b)print(a is c)-------------------------输出结果如下:FalseTrue
复制代码


a、b 这两个变量的储存的内容不一样,所以储存单元肯定不一致,但是 c 和 a 的其实都是 3,这两个变量的存储单元其实是一致的,这个应该比较容易理解。


上方例子若将 is 改为 is not,则输出的结果与上面相反。


若 a,b 都为列表,a=[0,1,2],b=[1-1,2-1,3-1],变量 b 通过运算后得出的列表也是[0,1,2],这很好理解,但是这里我们有两个问题:


  • a 引用的对象是否跟 b 是一致的呢?

  • 如果 c=a,a 和 c 引用的对象又是否一致呢?


我们运行代码来获取结果:


a=[0,1,2]b=[1-1,2-1,3-1]c=aprint(a)print(b)print(a is b)print(a is c)---------------------------输出结果如下:[0, 1, 2][0, 1, 2]FalseTrue
复制代码


结果我们发现,a 和 b 引用的对象是不一致的,所以 a is b 输出的结果是 FALSE,因为变量 b 是需要计算的,虽然计算之后得到的列表跟 a 一模一样,但是计算之前的过程每个元素是要存储的,变量 a 当中的元素都是数字,计算机是直接存储结果的,而变量 b 当中的每个元素都是表达式,表达式的储存跟单个元素的储存是不一致的,列表、元组都是如此。(注意:可计算出结果的纯数值表达式仍然是直接储存结果值)

is 与==的区别

双等号是比较运算符,用来判断左右两边的数据是否相等,那么 is 和双等号在应用时是否一样呢?我们还是接着上面的按个例子,如果我们用“==”来判断 a、b、c 三个变量是否相等,代码演示如下:


a=[0,1,2]b=[1-1,2-1,3-1]c=aprint(a is b)print(a is c)print(b is c)print(a is b is c)print(a==b==c)--------------------输出结果如下:FalseTrueFalseFalseTrue
复制代码


通过运行结果,我们看到用双等号进行判断是,只要最终的值是一致的用双等号进行比较运算结果就是 TRUE,而 is 则必须引用同一对象返回结果才为 TRUE,否则就是 FALSE,这就是 is 和“==”的区别,使用这两个运算符时不能混淆,因为实现的功能是不一样的。

总结

本篇文章我们介绍了逻辑运算符,成员运算符和身份运算符的使用,我们特别要注意一般情况下,这三种运算符输出的都是 bool 值,我们也要注意==号与 is 的区别。下一篇文章,我们将介绍赋值运算符,位运算符和运算符优先级。


获取更多技术资料,请点击!

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
软件测试| 教你拿捏Python运算符(三)_霍格沃兹测试开发学社_InfoQ写作社区