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寫文件
- 文件指針