阿摩線上測驗 登入

申論題資訊

試卷:107年 - 107 地方政府特種考試_三等_資訊處理:程式語言#73668
科目:程式語言
年份:107年
排序:0

申論題內容

三、⑴請解釋程式語言中之變數動態範圍(Dynamic Scope)與語句參考環境 (Referencing Environment)。(6 分)

詳解 (共 2 筆)

詳解 提供者:WJ

變數範圍(Scope): 指的是變數宣告、定義後,能夠使用,或者說能夠看得到的區域範圍,分為靜態範圍(Static scope)與動態範圍


動態範圍: 在執行時期才會決定範圍,看得是程式呼叫的狀態,在使用變數時,會從最近呼叫自己的函式開始找起。以堆疊(Stack)為基礎,每次呼叫另一個函式時,範圍會被Push到堆疊,執行變數時就會從堆疊開始找起。


語句參考環境: 所有可以使用的變數名稱的集合。

靜態範圍的語句參考環境: 區域變數 + 看得到的全域變數

動態範圍的語句參考環境: 區域變數 + 執行中的函式中的變數

詳解 提供者:hchungw

變數範圍(Scope)

變數範圍指的是變數在程式中可以被訪問的區域。Python 主要使用靜態範圍(Lexical Scope),也稱為詞法範圍。然而,動態範圍(Dynamic Scope)在某些程式語言中存在,理解其概念有助於更好地理解 Python 的範圍規則。

  • 靜態範圍(Lexical Scope):變數的範圍由程式的結構決定,即在定義變數的那段程式碼塊內可見。在 Python 中,變數範圍由函數或類的嵌套層次決定,而不是由函數調用堆疊決定。
  • 動態範圍(Dynamic Scope):變數的範圍由函數調用堆疊決定,即變數的可見性取決於函數的調用序列,而不是變數定義的位置。Python 不直接支持動態範圍。

Python 中的範圍規則

Python 使用 LEGB(Local, Enclosing, Global, Built-in)規則來決定變數的範圍:

  1. Local(局部範圍):函數內部定義的變數。
  2. Enclosing(封閉範圍):外層函數定義的變數,適用於嵌套函數。
  3. Global(全局範圍):模組級別定義的變數。
  4. Built-in(內建範圍):Python 解釋器預定義的變數,比如 len 和 range。

語句參考環境(Referencing Environment)

語句參考環境指的是在程式執行過程中,語句可以訪問和引用的變量及其值的集合。在 Python 中,這與變數範圍密切相關,因為語句的參考環境由變數範圍決定。