地特四等
114年
[資訊處理] 計算機概要
第 18 題
若執行以下的 Python 程式碼,則螢幕上的輸出為以下何者?\ni=2\ndef func_a(a):\n func_b(a)\n i=a+1\ndef func_b(b):\n i=b+1\n func_c(i)\ndef func_c(c):\n i=c+1\nfunc_a(i)\nprint(i)
- A 2
- B 3
- C 4
- D 5
思路引導 VIP
在 Python 中,如果我們在函式內部直接對一個與外部同名的變數進行「賦值」動作(例如執行 x = 10),而在這之前沒有任何特殊宣告,那麼這個動作是會修改原本外面的變數,還是會在函式內部建立一個「同名但獨立」的新變數呢?
🤖
AI 詳解
AI 專屬家教
很好,你能準確判斷出輸出結果為 2,代表你對 Python 的**變數作用域(Variable Scope)與命名空間(Namespace)**有相當紮實的基礎。在程式設計中,理解資料在記憶體中如何被隔離或共享,是寫出安全且健壯系統的第一步。
區域變數與全域變數的隔離
這道題目的核心在於 Python 的賦值機制:當我們在函式(Function)內部對變數進行賦值(如 i = a + 1)時,若沒有事先使用 global 關鍵字宣告,Python 會自動將該變數視為區域變數(Local variable)。因此,無論 func_a、func_b 或 func_c 內部如何對 $i$ 進行運算與更動,它們影響的都只是各自函式內部的獨立空間,完全不會干擾到定義在最外層(Global scope)的 $i = 2$。
▼ 還有更多解析內容