iT邦幫忙

0

Python 全域變數 (global variable) 與區域變數 (local variable) 的區別

  • 分享至 

  • xImage
  •  

在 Python 程式中,變數的作用範圍是一個重要的概念。根據變數定義的位置和作用範圍,可以將變數分為全域變數和區域變數。

全域變數 (global variable)

定義位置: 在所有函數之外定義的變數。
作用範圍: 在整個程式中都可以被訪問和修改。
生命週期: 從程式開始執行到程式結束。

區域變數 (local variable)

定義位置: 在函數內部定義的變數。
作用範圍: 僅限於定義它的函數內部。
生命週期: 從函數被調用開始,到函數執行結束。

舉例說明

x = 10  # 全域變數

def my_function():
    y = 20  # 區域變數
    print(x)  # 可以訪問全域變數
    print(y)  # 只能在函數內訪問

my_function()
print(x)  # 可以訪問全域變數
print(y)  # 會報錯,因為 y 是區域變數,在函數外部無法訪問

何時使用哪種變數

  • 全域變數:
    某些值需要在整個程式中共享時,例如配置參數。
    但過多的全域變數會使程式碼難以維護,容易產生錯誤。
  • 區域變數:
    大部分情況下,建議使用區域變數,因為它們更安全、更易於管理。
    對於臨時變數或只在特定函數中使用的變數,使用區域變數是最佳選擇。

在 Python 函數內修改全域變數:global 關鍵字

為什麼需要 global 關鍵字?
一般來說,在函數內部,我們無法直接修改函數外部定義的全域變數。
這是因為函數內部會創建一個新的命名空間,區域變數會優先於全域變數。

然而,如果我們確實需要在函數內修改全域變數,就必須使用 global 關鍵字來明確告訴 Python 解釋器,
我們要操作的是全域變數,而不是創建一個新的區域變數。

global 關鍵字的用法

x = 10  # 全域變數

def my_function():
    global x  # 宣告 x 是全域變數
    x = 20

my_function()
print(x)  # 输出:20

在上面的例子中:

  • x 在函數外部被定義為全域變數。
  • 在 my_function 內部,使用 global x 聲明,表示我們要操作的是函數外部的 x。
  • 在函數內將 x 的值改為 20,這會直接修改全域變數 x 的值。

使用 global 關鍵字的注意事項

過度使用會降低程式碼的可讀性: 過多地使用 global 關鍵字會使程式碼變得複雜,難以追踪變數的變化。
可能產生意想不到的副作用: 如果多個函數都修改了同一個全域變數,可能會導致程式出現不可預測的行為。

何時使用 global 關鍵字

  • 當全域變數的值需要在多個函數中共享且頻繁修改時,可以使用 global 關鍵字。
  • 當需要在函數內初始化一個全域變數時,可以使用 global 關鍵字。

建議:盡量避免使用 global 關鍵字

  • 優先使用函數的返回值: 函數可以返回一個值,將計算結果傳遞給調用者,而不是直接修改全域變數。
  • 考慮使用類: 如果需要管理多個相關的變數,可以將它們封裝在一個類中,通過類的屬性來訪問和修改這些變數。

示例:使用函數返回值

def increment(x):
    return x + 1

x = 10
x = increment(x)
print(x)  # 输出:11

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言