Python中的bool类型
Python 布尔类型 bool
python 中布尔值使用常量True 和 False来表示;注意大小写
比较运算符< > == 等返回的类型就是bool类型;布尔类型通常在 if 和 while 语句中应用
这边需要注意的是,python中,bool是int的子类(继承int),故 True==1 False==0 是会返回Ture的,有点坑,如要切实判断用 xxx is True
1 print(True==1) # 返回True
2 print(False==0) # 返回True
3 print(1 is True)
4 print(0 is False)
另外,还有几个坑。。。 如,Python2中True/False不是关键字,因此我们可以对其进行任意的赋值;同理,Python 中 if(True) 的效率远比不上 if(1)
True = "True is not keyword in Python2" # Python2 版本中True False不是关键字,可被赋值,Python3中会报错
另,由于bool是int,可进行数字计算 print(True+True)
True or False 判定
以下会被判定为 False :
- None
- False
- zero of any numeric type, for example, 0, 0.0, 0j.
- any empty sequence, for example, '', (), [].
- any empty mapping, for example, {}.
- instances of user-defined classes, if the class defines a __bool__() or __len__() method, when that method returns the integer zero or bool value False.
除了以上的,其他的表达式均会被判定为 True,这个需要注意,与其他的语言有比较大的不同。
1 print(bool())
2 print(bool(False))
3 print(bool(0),bool(0.0),bool(0j))
4 print(bool(""),bool(()),bool([]),bool({}))
5 class alfalse():
6 def __bool__(self): # 定义了 __bool__() 方法,始终返回False
7 return False
8 f = alfalse()
9 print(bool(f))
10 class alzero():
11 def __len__(self): # 定义了 __len__() 方法,始终返回0
12 return 0
13 zero = alzero()
14 print(bool(zero))
15 class justaclass():
16 pass
17 c = justaclass()
18 print(bool(c)) # 一般class instance都返回为True
布尔运算符 and or not
Operation | Result |
---|---|
x or y | if x is false, then y, else x |
x and y | if x is false, then x, else y |
not x | if x is false, then True, else False |
注意均为小写: and or not ; 注意布尔运算的优先级低于表达式, not a == b 相当于 not (a == b), 若 a == not b 就会有语法错误
1 print((True and False),(False and False),(True and True))
2 print((True or False),(False or False),(True or True))
3 print((not True),(not False))
4 print( 1>1 and 1<1 ) # 表达式优于bool运算 相当于 print( (1>1) and (1<1) )
5 print( (1>1 and 1)<1) # 加括号了,值就不一样了
6 print(True and 1) # True and 数字,不建议这么使用,返回的是数字
7 print(True and 111)
8 print(False and 2) # False and 数字,返回False
9 print(not 1==1)
10 T = True
11 F = False
12 # print(T == not F) # 会报错
13 print(T == (not F)) # 需加括号
转载自:https://www.cnblogs.com/feeland/p/4360331.html
Python中的bool类型的更多相关文章
- Python中内置数据类型list,tuple,dict,set的区别和用法
Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...
- Python 中的枚举类型~转
Python 中的枚举类型 摘要: 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期.月份.状态等. 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表 ...
- object-c中的BOOL类型
object-c中的布尔类型比C语言中的bool类型早了10年,它具有YES和NO两种值.在object-c中的布尔类型BOOL实际上是一种带符号的字符类型(signed char),它使用的空间是1 ...
- python中对象、类型和元类之间的关系
在python中对象.类型和元类构成了一个微妙的世界. 他们有在这个世界里和平共处,相辅相成.它们遵循着几条亘古不变的定律: 1.python中无处不对象 2.所有对象都有三种特性:id.类型.值 3 ...
- Python中的集合类型分类和集合类型操作符解析
集合类型 数学上,把set称作由不同的元素组成的集合,集合(set)的成员通常被称作集合元素(set elements). Python把这个概念引入到它的集合类型对象里.集合对象是一组无 ...
- c语言中自定义bool类型模板
首先,c语言中没有bool类型,只有c++中有,所以需要自定义,即c中表示bool类型的方法: 1.模板1 typedef int bool; #define false 0 #define true ...
- Python中的鸭子类型
今天,我们来聊一聊Python中的鸭子类型(duck typing). 编程语言具有类型概念,例如Python中有数字类型.字符串类型.布尔类型,或者更加复杂的结构,例如元组tuple.列表list. ...
- Python 中的鸭子类型和猴子补丁
原文链接: Python 中的鸭子类型和猴子补丁 大家好,我是老王. Python 开发者可能都听说过鸭子类型和猴子补丁这两个词,即使没听过,也大概率写过相关的代码,只不过并不了解其背后的技术要点是这 ...
- Python学习笔记整理(三)Python中的动态类型简介
Python中只有一个赋值模型 一.缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明.这意味着没有必要事声明变量.只要记住,这个概念实质上对变量,对象和它们之 ...
随机推荐
- 杭电oj1995——汉诺塔V(java实现)
正文之前,先说下做这题的心路历程(简直心累) 这是今天下午的第一道题 第一次看到题目标题——汉诺塔 内心OS:wc,汉诺塔诶,听名字就很难诶,没做过诶,肯定很难实现吧,不行,我得去看看讲解 然后就上b ...
- c#中转义字符\n和\r的区别
在c#中\n代表换行,\r代表回车,但\r是把后面的字符覆盖前面的,例: "1234\n567" 输出的是 1234 567 "1234\r567"输出的是 5 ...
- JVM&GC详解
1.JVM简介 JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器.它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序. ja ...
- grunt里面将es6转为es5,遇到的坑
今天看了一下grunt的官方文档,就按照教程来自己创建一个demo,发现grunt要把es6转化为es5需要安装babel,然后就按照grunt-babel的文档进行了一系列操作,等我要兴致勃勃的运行 ...
- POJ 3368 (ST表)
链接:http://poj.org/problem?id=3368 题意:给出n个连续单调不递减数,q次询问,每次询问区间(L,R)出现频率最多的数,问出现了多少次 思路:因为n个数是单调不递减的,所 ...
- mysql 原有的主键情况下设置自增字段
mysql 的自增字段只能是主键,如果原表已经有主键,需要设置自增字段应该怎么做呢? 1.alter table bu_staff drop primary key; 先删除表的主键 id为原表 ...
- Python_初识面向对象
楔子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗 ...
- js打开新窗口,js打开居中窗口,js打开自定义窗口
================================ ©Copyright 蕃薯耀 2020-01-07 https://www.cnblogs.com/fanshuyao/ var is ...
- js处理json字符串
后台输出的字符串为 res= {"result":"true","data":"提交成功"} 前台js无法转化成对象,需 ...
- 请求响应状态status为canceled
发出ajax请求之后 发现status状态是canceled 1. 和form冲突 我的提交代码是这样的 $.ajax({ //几个参数需要注意一下 type: "POST",// ...