iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
佛心分享-IT 人自學之術

當 Python 初學者遇到 AI:30 天人機協作學習手記系列 第 12 篇

[Day 12] 變數的生存法則與結界:全域變數與區域變數

  • 分享至 

  • xImage
  •  

今日對話:為什麼外面的變數進不去,裡面的變數出不來?

我的 Prompt(提示詞):

「我在函式裡面建立的變數,為什麼在函式外面無法使用?請用白話文與生活化的比喻,教我什麼是『全域變數 』與『區域變數』?另外,如果我非得要在函式裡面修改外面的變數,該怎麼做?」

AI 導師的建議與拆解

AI 導師用了一個「公司辦公室」的絕佳比喻,把作用域的概念具象化了:

  1. 區域變數 (Local Variable):小會議室裡的機密

定義:在函式「內部」建立的變數。
特性:函式就像一間小會議室。會議開始(呼叫函式)時變數誕生;會議一結束(函式執行完畢),裡面的白板就會被擦掉,變數跟著立刻消滅。
所以在會議室外面(函式外),絕對拿不到會議室裡面的機密資料。

  1. 全域變數 (Global Variable):公司大廳的公佈欄

定義:在所有函式「外部」(最外層)建立的變數。
特性:只要在公佈欄上,大家(所有函式)都看得到它的值。

3.新手大坑:看得到,但不一定摸得到!
雖然函式裡面可以「看見」外面的全域變數,但 Python 為了保護資料不被隨便篡改,預設不允許函式直接修改全域變數。如果你硬要改,必須在函式內大喊一聲 global 變數名稱(申請修改許可),Python 才會放行!

實作筆記與驗證

看了 AI 的解釋,原來函式有一層結界!我打開 VS Code 建立 day12.py檔案,設計了一個「勇者血量」的測試來驗證看看:

python
#------------------------------
#1. 區域變數 (Local) 測試
#------------------------------
def make_coffee():
sugar = 2 # sugar 是誕生在函式內的「區域變數」
print(f"☕ 咖啡泡好了,加了 {sugar} 顆糖")

make_coffee()
#下面這行如果取消註解,會直接報錯,因為 sugar 已經隨著函式結束被消滅了!
#print(sugar)

#------------------------------
#2. 全域變數 (Global) 測試
#------------------------------
player_hp = 100 # 寫在最外面的「全域變數」

def take_damage():
# 想要在函式內「修改」外面的全域變數,必須先用 global 宣告取得權限!
global player_hp
player_hp -= 15
print(f"💥 勇者遭受攻擊!剩餘血量:{player_hp}")

print(f"初始血量:{player_hp}")
take_damage()
take_damage()
print(f"戰鬥結束,最終血量:{player_hp}")

今日小結與明日預告

今天搞懂了變數的生存空間。


上一篇
[Day 11] 打包你的專屬工具箱:Python 函式基礎與 return
下一篇
[Day 13] 讓資料永久保存:Python 基礎檔案操作與 with open() 語法
系列文
當 Python 初學者遇到 AI:30 天人機協作學習手記 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言