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

原文地址:https://www.cnblogs.com/DcentMan/p/11415808.html

时间: 2024-10-01 09:36:11

Python中的bool类型的相关文章

object-c中的BOOL类型

object-c中的布尔类型比C语言中的bool类型早了10年,它具有YES和NO两种值.在object-c中的布尔类型BOOL实际上是一种带符号的字符类型(signed char),它使用的空间是1byte,即8bit,其中YES定义为1,NO定义为0.将大于1字节的整形数(比如short或者int)赋给BOOL变量,会被截断处理,只保留末尾的8个bit. 以下是object-c中使用BOOL类型的例子: #import <Foundation/Foundation.h> //比较两个int

python中各种常用类型的转换的代码

在学习过程中,将写代码过程中常用的内容做个收藏,下面代码是关于python中各种常用类型的转换的代码,应该是对码农们有一些用. int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将x转换到一个浮点数 complex(real [,imag ]) 创建一个复数 str(x ) 将对象 x 转换为字符串 repr(x ) 将对象 x 转换为表达式字符串 eval(str ) 用来计算在字符串中的有效Python表达式,并返

python中各种基础类型的转换,二进制,八进制,十进制,十六进制

python中所有类型都是作为对象的形式来存在的. 在python中没有char型,只有字符串类型,这样我们可能将char型转换为整型时极不方便,但是python已经提供了这些转换的内置函数. python 中除了整型,其他进制的只能用字符串来表示 1 int() 可以将 二进制,八进制,十六进制转换成十进制整型 >>> int('1111', 2) 15 >>> int('f', 16) 15 >>> int('17', 8) 15 2 chr()

Python学习笔记整理(三)Python中的动态类型简介

Python中只有一个赋值模型 一.缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明.这意味着没有必要事声明变量.只要记住,这个概念实质上对变量,对象和它们之间的关系都适用.那么这个概念也容易理解并掌握. 1.变量,对象和引用 变量创建:一个变量,当代码第一次给它赋值时它就被创建了.之后的赋值将会改变已创建的变量名的值.Python在代码运行之前先检测变量名,可以当成是最初的赋值创建变量. 变量类型:变量永远不会有任何的它关联的类型信息或约束.类型的概念

黑马程序员----OC中含有BOOL类型

一.BOOL类型 OC中有布尔类型 BOOL(C语言中没有布尔类型) 二.BOOL类型的本质 typedef signed char BOOL; 三.BOOL类型的取值范围 BOOL类型的变量又2种取值:YES .NO #define YES (BOOL)1 #define NO (BOOL)0 四.代码练习: 运行结果:

python中的number类型

python中的number具体分为: int(有符号整型) long(长整型[也可以代表八进制和十六进制]) float(浮点型) complex(复数) 变量命名: a=1 整数型 b=1.0 浮点型 c=1000025555441122 长整型 d=4.23+8.5j 复数类型 看上去很简单. 我们做一些除法运算的时候,python中10/3=3.3333333333333335 .这和JAVA和c#中的一些除法不相同,在这些语言中10/3=3.这是为什么呢?因为python中比较接近自然

Python中的基本类型简介

1.变量 变量不仅可以是数字,还可以是任意数据类型 命名规范:变量是用一个变量名表示,变量名必须是大小写英文.数字和下划线_的组合,且不能用数字开头 python中等号"="是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,这种变量本身类型不固定的语言称之为动态语言 print 'a','b'  #,为空格:  例如: a='ABC' 含义为:(1)在内存中创建了一个'ABC'的字符串 (2)在内存中创建了一个名为a的变量,并把它指向了'ABC

Python中内置数据类型list,tuple,dict,set的区别和用法

Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. (原链接:http://www.jb51.net/article/76339.htm) List 字面意思就是一个集合,在Python中List中的元素用中括号[]来表示,可以这样定义一个List: ? 1 L = [12, 'China', 19.998] 可以看到并不要求元素的类型都是一样的.当然也可以定

ObjectC中的BOOL类型

绝不要直接将BOOL值和YES比较 Objective-C中的BOOL实际上是一种带符号的的字符类型(signed char)的定义,它使用8位存储空间.YES定义为1,而NO定义为0. #import <Foundation/Foundation.h> BOOL areIntsDifferent(int things1, int things2) { if(things1 == things2) return (NO); else return (YES); }//areIntsDiffer