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

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

前言

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

逻辑运算符

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

逻辑运算符 含义 基本格式 说明
and 逻辑与运算,等价于数学中的“且 a and b 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假
or 逻辑或运算,等价于数学中的“或” a or b 当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。
not 逻辑非运算,等价于数学中的“非” not a 如果 a 为真,那么 not a 的结果为假;如果 a 为假,那么 not a 的结果为真。相当于对 a 取反。

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 -->True
print(3 > 2 or 2 > 1)  # 返回的是bool类型 Ture and Tue -->True
print(3 > 2 or 2 < 1)  # 返回的是bool类型 Ture and False -->True
print(not (3 > 2))  # not True相反结果就是False

a = True
b = True
c = False
d = False
print(a and b)  # True
print(a and c)  # False

# 连续比较:a>b>c --> a>b and b>c  两者都为True才为True
print(3 > 2 > 1)  # True
print(3 > 2 > 2)  # 3>2(True) and 2>2(False)
print((3 > 2) > 1)  # 加了小括号优先级。True > 1 -->False
print(True == 1)  # 1不大于1

# 输出非bool型示例

print(100 and 200)
print(45 and 0)
print("" or "muller")
print(18.5 or "muller")
--------------------------------------------
True
True
True
False
True
False
True
False
False
True
200
0
muller
18.5

成员运算符

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

运算符 描述
in 判断某个值是否在序列中,在则返回True,反之返回False
not in 判断某个值是否不在序列中,不在则返回True,反之返回False

示例代码如下:

# 成员运算符in in not
name = "moss"

roles = ["刘培强", "图恒宇", "张鹏", "周喆直","moss"]

# 判断moss在roles中则返回True
print(name in roles)

# 判断moss不在roles中则返回True
print(name not in roles)
----------------------------------
输出结果如下:
True
False

身份运算符

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

运算符 描述
is 判断两个数据引用对象否一致,一致则返回True
not 判断两个数据引用对象是否不一致,不一致则返回True

示例代码如下:

a=3
b=2
c=a
print(a is b)
print(a is c)
-------------------------
输出结果如下:
False
True

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=a
print(a)
print(b)
print(a is b)
print(a is c)
---------------------------
输出结果如下:
[0, 1, 2]
[0, 1, 2]
False
True

结果我们发现,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=a
print(a is b)
print(a is c)
print(b is c)
print(a is b is c)
print(a==b==c)
--------------------
输出结果如下:
False
True
False
False
True

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

总结

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

相关文章
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
372 1
|
2月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
208 3
|
4月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
288 18
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
297 61
|
4月前
|
安全 测试技术 API
Python 单元测试详解
单元测试是Python开发中不可或缺的环节,能确保代码按预期运行、发现Bug、提升代码质量并支持安全重构。本文从基础概念讲起,逐步介绍Python单元测试的实践方法,涵盖unittest框架、pytest框架、断言使用、Mock技巧及测试覆盖率分析,助你全面掌握单元测试技能。
263 0
|
5月前
|
IDE 测试技术 API
python调试与测试
python调试与测试
|
5月前
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。
|
6月前
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
172 10
|
7月前
|
人工智能 Python
Python 中的 `and`, `or`, `not` 运算符
本文介绍了 Python 中的逻辑运算符 `and`、`or` 和 `not` 的基本用法及其特性。这些运算符主要用于布尔运算,特别是在条件判断和循环中非常有用。文章详细解释了每个运算符的功能,例如 `and` 检查所有表达式是否为真,`or` 检查是否有任意一个表达式为真,`not` 用于取反。此外,还提到这些运算符支持短路特性,并可应用于非布尔值场景。掌握这些运算符有助于编写更高效、简洁的代码。
608 11
|
6月前
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
295 0

推荐镜像

更多