Python 布林 (Boolean)
布林型別只有兩個值:True(真)和 False(假),常用於條件判斷和邏輯運算。
布林值
is_active = True
is_deleted = False
print(type(is_active)) # <class 'bool'>
Python 的布林值
True 和 False 首字母必須大寫。比較運算產生布林值
print(5 > 3) # True
print(5 < 3) # False
print(5 == 5) # True
print(5 != 5) # False
x = 10
print(x > 5 and x < 20) # True
布林運算
a = True
b = False
# and - 且(兩者都為 True 才是 True)
print(a and b) # False
print(a and a) # True
# or - 或(其中一個為 True 就是 True)
print(a or b) # True
print(b or b) # False
# not - 非(反轉布林值)
print(not a) # False
print(not b) # True
Truthy 和 Falsy
Python 中所有值都可以當作布林值來判斷。會被當作 False 的值稱為「Falsy」,其他都是「Truthy」。
Falsy 值(會被當作 False)
FalseNone- 數字零:
0、0.0、0j - 空序列:
""、[]、()、{}、set() - 空範圍:
range(0)
# 這些都是 Falsy
print(bool(False)) # False
print(bool(None)) # False
print(bool(0)) # False
print(bool(0.0)) # False
print(bool("")) # False
print(bool([])) # False
print(bool({})) # False
Truthy 值(會被當作 True)
除了上述 Falsy 值以外的所有值:
# 這些都是 Truthy
print(bool(True)) # True
print(bool(1)) # True
print(bool(-1)) # True
print(bool("Hello")) # True
print(bool([1, 2])) # True
print(bool({"a": 1})) # True
在條件判斷中使用
因為 Python 會自動將值轉換為布林值,所以可以這樣寫:
name = ""
# 不需要寫 if name != "":
if name:
print("Name is provided")
else:
print("Name is empty") # 會執行這行
my_list = [1, 2, 3]
# 不需要寫 if len(my_list) > 0:
if my_list:
print("List is not empty") # 會執行這行
布林值是整數
在 Python 中,True 等同於 1,False 等同於 0:
print(True == 1) # True
print(False == 0) # True
# 可以做數學運算
print(True + True) # 2
print(True + False) # 1
print(False + False) # 0
# 計算 True 的數量
results = [True, False, True, True, False]
print(sum(results)) # 3
bool() 函數
使用 bool() 函數可以將任何值轉換為布林值:
print(bool(1)) # True
print(bool(0)) # False
print(bool("Hello")) # True
print(bool("")) # False
print(bool([1, 2])) # True
print(bool([])) # False
短路求值 (Short-circuit Evaluation)
and 和 or 運算會使用短路求值:
# and - 如果第一個值是 Falsy,直接回傳第一個值
print(0 and "Hello") # 0
print("Hi" and "Hello") # Hello
# or - 如果第一個值是 Truthy,直接回傳第一個值
print("Hi" or "Hello") # Hi
print(0 or "Hello") # Hello
print("" or "default") # default
# 常見應用:設定預設值
name = ""
display_name = name or "Anonymous"
print(display_name) # Anonymous