大家好,我是 星源,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️⃣ 小結

  1. 全局變量:用 global 聲明,在函數內改全局變量。
  2. 異常處理try/except 捕獲錯誤,程序不崩潰。
  3. 函數實戰:猜數字程序用到了隨機數、循環、條件判斷,全是函數封裝起來的邏輯。

✨ 課後習題

  1. 為什麼用函數提升代碼複用性?
  2. 函數定義時執行代碼嗎?什麼時候執行?
  3. 什麼是 def 語句?
  4. 什麼是函數調用?
  5. Python 有幾全局作用域?幾局部作用域?
  6. 函數返回後,局部變量發生了什麼?
  7. 什麼是返回值?可以作為表達式的一部分嗎?
  8. return 的函數返回值是什麼?
  9. 怎麼讓函數中的變量指全局變量?
  10. None 的數據類型是什麼?
  11. import areallyourpetsnamederic 語句作用?
  12. 模塊 spam 中函數 bacon() 如何調用?
  13. 遇到錯誤時按什麼鍵中斷程序?
  14. tryexcept 子句分別放什麼代碼?

✅ 總結

  1. global 讓函數改全局變量,但少用為好。
  2. try/except 是錯誤處理的“安全網”。
  3. 猜數字項目綜合了隨機數、循環、條件,函數封裝讓邏輯清晰。
  4. 函數是代碼複用的核心,把功能模塊化,寫一次用多次。

📢 互動提問

👉 “第一次用 try/except 捕獲錯誤時,你有沒有漏寫 except 導致程序還是直接崩了?”
留言吐槽踩坑瞬間,一起長記性!