Python 布林 (Boolean)

布林型別只有兩個值:True(真)和 False(假),常用於條件判斷和邏輯運算。

布林值

is_active = True
is_deleted = False

print(type(is_active))  # <class 'bool'>
Python 的布林值 TrueFalse 首字母必須大寫。

比較運算產生布林值

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)

  • False
  • None
  • 數字零:00.00j
  • 空序列:""[](){}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 等同於 1False 等同於 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)

andor 運算會使用短路求值:

# 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