python中还有一个数据类型是布尔型(bool),只有两个值,也是内置常量:
- `True`:真
- `Flase`: 假
一般用于条件判断。
```python
>>> True
True
>>> Flase
False
>>> type(False)
bool
>>> type(True)
bool
```
注意首字母要大写。
## 布尔类型转换
任意数据都可以通过函数`bool`转换成布尔型。
在python中整数`0`,浮点数`0.0`,复数`0.0+0.0j`,空字符串`''`,空列表`[]`,空元组`()`,空集合`set()`,空字典`{}`,`None`的布尔值都是`False`,其他数值都为`True`。
```python
>>> print(bool(0))
False
>>> print(bool(0.0))
False
>>> print(bool(0.0+0.0j))
False
>>> print(bool(''))
False
>>> print(bool([]))
False
>>> print(bool(()))
False
>>> print(bool({}))
False
>>> print(bool(set()))
False
>>> print(bool(None))
False
>>> print(bool(0.1))
True
```
## 比较运算符
相同类型的数据可以通过比较运算符进行比较,结果为布尔型。python中支持的比较运算符有:
| 运算符 | 描述 | 实例 |
| ------ | ------------------------------- | ------------------- |
| == | 等于-比较对象是否相等 | print(a==b) # False |
| is | 等于-比较对象的内存地址是否相同 | print(a is b) |
| != | 不等于 | print(a!=b) # True |
| > | 大于 | print(a>b) # False |
| < | 小于 | print(a<b) # True |
| >= | 大于等于 | print(a>=b) # False |
| <= | 小于等于 | print(a<=b) # True |
```python
>>> a = 1
>>> b = 2
>>> a == b
False
>>> a < b
True
>>> a != b
True
>>> a <= b
True
```
数字间的比较运算和数学完全一致,字符串的比较是通过unicode。
需要注意的,和面试常被问到的一个问题是,`==`和`is`的区别。
- `==`是比较两个对象的值是否相等。
- `is`是比较两个对象的`id()`是否相等。
```python
>>> a = 300
>>> b = 300
>>> a == b
True
>>> a is b
False
```
## 成员运算符
在python中可以通过成员运算符`in`来检查一个对象是否是另外一个对象的成员。
| 运算符 | 描述 | 实例 |
| ------ | :---------------------------------------------- | ------------------------------------------------ |
| in | 如果在指定的序列中找到值返回True,否则False | `L = [1, 2, 3, 4, 5] a = 3 print(a in L) # True` |
| not in | 如果在指定的序列中没有找到值返回True,否则False | `print(a not in L) # False` |
支持成员运算符的基本数据类型有,字符串,列表,元组,集合,字典。
```python
>>> ls = [1,2,3,4]
>>> 1 in ls # 检查列表的元素
True
>>> s = ['abcdefg']
>>> 'a' in s # 检查字符串
True
>>> t = (1,2,3) # 检查元组
>>> 4 in t
False
>>> d = {'name': 'xinlan', 'age': 18}
>>> 'name' in d # 检查字典的键
True
>>> st = {1,2,3}
>>> 1 in st # 检查集合
True
```
## 逻辑运算符
python中支持的逻辑运算符有
| 运算符 | 描述 | 实例 |
| ------ | ------------------------------------------------ | --------------------- |
| and | 与,如果x为False,x and y返回x的值,否则返回y的值 | print(a and b) # True |
| or | 或,如果x为True,x and y返回x的值,否则返回y的值 | print(a or b) # True |
| not | 非,如果x为True,返回False,反之,返回True | print(not a) # False |
注意仔细看描述,编程语言里的逻辑运算为了效率计算方式有所不同。
- `and`
逻辑与,两边都为真就为真,否则为假。
但注意在python中真正运算时的规则为:如果`x`为`False`那么`x and y`会返回`x`的值,否则返回`y`的值。这样计算的好处是当`x`为`Flase`直接返回`x`的值,不会去计算`y`,提高效率,在python中这种情况叫`短路`。
```python
>>> True and True
True
>>> True and Flase
Flase
>>> 0 and 2**3 # 短路,不会计算2**3
0
```
- `or`
逻辑或,有一边为真即为真,全为假即为假。
但注意在python中真正运算时的规则为:如果`x`为`True`那么`x and y`会返回`x`的值,否则返回`y`的值。这样计算的好处是当`x`为`True`直接返回`x`的值,不会去计算`y`,提高效率,在python中这种情况叫`短路`。
```python
>>> False or False
False
>>> True or False
True
>>> 1 or 2**3 # 短路,不会计算2**3
1
```
- `not`
逻辑非,取反
```python
>>> not False
True
>>> not True
False
>>> not 1
False
>>> not 0
True
```
## 布尔型运算
布尔型是整数类型的子类,`True`是真,实际值是`1`,`False`是假,实际值是`0`。布尔型可以直接和数字进行数学计算。
```python
>>> True + 1
2
>>> False - 1
-1
```
- 第1章 编程基础
- 零基础能学Python吗?
- 编程语言是什么
- 编译型与解释型编程语言的区别
- python是什么?
- 学python能干什么?
- 第2章 python开发环境搭建
- windows下安装python
- cmd命令行工具
- 环境变量如何设置?
- 如何运行python程序?
- 学习神器Jupyter lab
- 第3章 基本数据类型
- 基本数据类型概述
- 变量的定义和使用
- 整数类型
- 浮点数类型
- 算术运算符
- 赋值运算符
- 字符串类型
- 字符串常用方法
- 字符串格式化
- 列表类型
- 元组类型
- 可变与不可变类型
- 深浅拷贝
- 集合类型
- 字典类型
- 布尔型
- NoneType
- 第4章 程序流程控制
- 程序结构
- if分支语句
- while条件循环
- for循环
- 循环控制关键字
- 异常处理
- 第5章函数与代码复用
- 函数的定义和调用
- 函数的参数
- 函数的返回值
- lambda函数
- 变量作用域
- python内建函数
- 第6章 面向对象
- 类和对象
- 属性
- 方法
- 继承
- super()函数
- 多态
- 私有化
- 自省与反射机制
- 第7章 模块和包
- 模块
- 包
- 第三方库
- 第8章 文件IO操作
- 文件概述
- 字符编码
- 字节类型
- python读取文件
- python写文件
- 文件指针