更多课程 选择中心


Python培训

400-111-8989

关于Python中bool类型,你需要知道这些细节…


布尔类型很简单,仅包括True和False两种类型,但你不一定真的了解……

1. 首次引进2002年3月,龟叔首次在PEP285中首次明确在python中引进布尔类型,并包括两个实例:"True"和"False"

2. 继承于int布尔类型是int型的一个子类,意味着"True"=1,"False"=0:

1print(True == 1) # 输出True2print(False == 0) # 输出True

当然,也支持对布尔值和int值进行简单的计算:

1True + 2 # 输出323 * False # 输出0

3. 布尔取值其他编程语言中,可能布尔值会写作"true"和"false",但在python中必须首字母大写:

1a = true2# NameError: name 'true' is not defined

4. 何为真假在python中,数值0(各种类型下的数值0)、空字符串、空列表等以及特殊的None值在判断真假时,将被判断为False:

1bool(0) # 整型0 False2bool(0.0) # 浮点数0 False3bool(None) # None值 False4bool('') # 空字符串 False5bool([]) # 空列表 False6bool([None]) # 含有None的列表 True

5. 全局实例由于布尔类型仅有两个取值,所以所有True或者False具有相同的实例地址:

1a = True2b = 1 == 13print(id(True)) #1407345307548964print(id(a)) #1407345307548965print(id(b)) #140734530754896

6. 逻辑运算与很多编程语言也不同,python中的布尔逻辑运算符是and、or和not,而不是&、||、~(分别代表了二级制位运算中的逻辑与、或、非):

1bool(3 and 4) # True2bool(3 & 4) # False 因为3&4的位运算结果为0

三种逻辑运算优先级为not>and>or:

10 or 1 and not 22# False

7. 短路特性短路特性意味着在and或or中,一个值可以判断出结果时,不再对后一个值进行判断,且返回值为可以得出结果的那个值:

13 and 4 #输出420 and 4 #输出033 or 4 #输出340 or 4 #输出4

利用这一特点,在有些程序设计中非常有用。例如判断一个列表中最后一个元素是否大于0时,由于不确定列表是否为空,所以直接按下标取值可能引发错误,比较稳妥的判断方式为:

1lyst = []2#可能引发错误的写法3if lyst[-1]>0: # IndexError: list index out of range4 print('ok')5# 稳妥的写法6if lyst and lyst[-1]>0:7 print('ok')

8. 龟叔关于布尔值的一些答复在PEP285文档中,龟叔给出了社区关于布尔类型的一些议论及答复。简要列举如下:

1. str(True)应该返回"True"还是"1"?

答:"True"。虽然True = 1,但str(True)= "1",不如"True"来得直观。

2. 新手倾向于写“ if x == True”?

答:实际上写“ if x”就足够了,会自动转化为布尔型进行真值判断。

3. 将来会取消布尔值的非布尔运算?例如使True+1非法?

答:不会,布尔值应始终允许算术运算。

4. 用boolean替代bool的写法?

答:不会。python一直主张简洁,例如def、int和dict都是缩写,虽然bool对于新手而言不如boolean更直观,但它只是一个单词而已。

5. 将来是否会要求布尔运算有明确的布尔值作为参数?例如"if []"变得非法,而必须写作"if bool([])"?

答:不会,至少龟叔不会同意。(再次说明python语法之简洁)

最后给出一个小彩蛋:

求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

示例 1:

输入: n = 3

输出: 6

限制:1 <= n <= 10000

来源:力扣(LeetCode) 剑指offer 64#题

简单的求和问题,但由于不允许用乘除法、循环和条件判断,所以原本简单的问题变得有些棘手。如果了解python布尔值是int子类和逻辑运算符的短路特性,就可以理解如下实现方法:

1def sumNums(self, n: int) -> int:2 return n and (n + sumNums(n-1))

免责声明:整理文章为传播相关技术,版权归原作者所有,如有侵权,请联系删除

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:python实现在函数中修改变量值的方法
下一篇:IT行业平均薪资突破14万稳居第一,前景大好!

为什么要学习Python编程?

为什么有人学完Python找不到工作?

Python 到底牛在哪?

编程入门语言,为什么建议学Python?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省