大家好,我是 星源,19 歲自學 Python 的編程小白 🤓。
今天接着啃函數!搞透全局變量、異常處理、項目實踐,再帶習題鞏固,徹底吃透函數這塊硬骨頭!
📌 今日學習內容
👉 “掌握全局變量、異常處理,寫出帶返回值的猜數字程序,變身函數小能手!”
✨ 知識點講解
1️⃣ global 語句
- 概念:在函數內部,用
global聲明變量名,表示“我要用全局的那個變量,不是新建局部變量”。 - 示例:
eggs = 'global'
def spam():
global eggs
eggs = 'spam' # 直接改全局變量
spam()
print(eggs) # 'spam'
- 小提示 🧐:能不用全局變量就不用,用多了會亂。
2️⃣ 異常處理
- 概念:程序出錯時,用
try/except捕獲錯誤,避免直接崩潰。 - 格式:
try:
可能報錯的代碼
except 錯誤類型:
處理錯誤的代碼
- 示例:
def spam(divideBy):
try:
return 42 / divideBy
except ZeroDivisionError:
print('Error: Invalid argument.')
spam(0) # 不再報錯,優雅處理
3️⃣ 小項目:猜數字
- 功能:程序隨機想一個數字,用户猜 6 次,猜中即贏。
- 代碼:
import random
def get_fortune():
res = {
1: '絕對如此',
2: '毫無疑問',
3: '肯定的',
4: '是的,絕對',
5: '你可以依賴它',
6: '在我看來,是的',
7: '很有可能',
8: '前景看好',
9: '跡象表明是肯定的'
}
r = random.randint(1, len(res))
fortune = res[r]
return fortune
print(get_fortune())
- 小提示 🧐:
random.randint(a, b)包含 a 和 b,範圍是閉區間。
4️⃣ 小結
- 全局變量:用
global聲明,在函數內改全局變量。 - 異常處理:
try/except捕獲錯誤,程序不崩潰。 - 函數實戰:猜數字程序用到了隨機數、循環、條件判斷,全是函數封裝起來的邏輯。
✨ 課後習題
- 為什麼用函數提升代碼複用性?
- 函數定義時執行代碼嗎?什麼時候執行?
- 什麼是
def語句? - 什麼是函數調用?
- Python 有幾全局作用域?幾局部作用域?
- 函數返回後,局部變量發生了什麼?
- 什麼是返回值?可以作為表達式的一部分嗎?
- 沒
return的函數返回值是什麼? - 怎麼讓函數中的變量指全局變量?
None的數據類型是什麼?import areallyourpetsnamederic語句作用?- 模塊
spam中函數bacon()如何調用? - 遇到錯誤時按什麼鍵中斷程序?
try和except子句分別放什麼代碼?
✅ 總結
global讓函數改全局變量,但少用為好。try/except是錯誤處理的“安全網”。- 猜數字項目綜合了隨機數、循環、條件,函數封裝讓邏輯清晰。
- 函數是代碼複用的核心,把功能模塊化,寫一次用多次。
📢 互動提問
👉 “第一次用 try/except 捕獲錯誤時,你有沒有漏寫 except 導致程序還是直接崩了?”
留言吐槽踩坑瞬間,一起長記性!