免費開始練習
地特四等 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_afunc_bfunc_c 內部如何對 $i$ 進行運算與更動,它們影響的都只是各自函式內部的獨立空間,完全不會干擾到定義在最外層(Global scope)的 $i = 2$。

▼ 還有更多解析內容

🏷️ 相關主題

程式設計與資料結構
查看更多「[資訊處理] 計算機概要」的主題分類考古題