软件测试| 教你拿捏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的区别。下一篇文章,我们将介绍赋值运算符,位运算符和运算符优先级。

相关文章
|
6月前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
143 61
|
6月前
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
2月前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
2月前
|
存储 JSON API
Python测试淘宝店铺所有商品接口的详细指南
本文详细介绍如何使用Python测试淘宝店铺商品接口,涵盖环境搭建、API接入、签名生成、请求发送、数据解析与存储、异常处理等步骤。通过具体代码示例,帮助开发者轻松获取和分析淘宝店铺商品数据,适用于电商运营、市场分析等场景。遵守法规、注意调用频率限制及数据安全,确保应用的稳定性和合法性。
|
5月前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
606 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
3月前
|
知识图谱 Python
Python入门:4.Python中的运算符
Python是一间强大而且便捷的编程语言,支持多种类型的运算符。在Python中,运算符被分为算术运算符、赋值运算符、复合赋值运算符、比较运算符和逻辑运算符等。本文将从基础到进阶进行分析,并通过一个综合案例展示其实际应用。
|
6月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
135 61
|
5月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
6月前
|
Python
Python运算符优先级
Python运算符优先级。
47 2
|
6月前
|
Python
Python成员运算符
Python成员运算符
57 2

热门文章

最新文章

下一篇
oss创建bucket
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等