在 Python 程式中,變數的作用範圍是一個重要的概念。根據變數定義的位置和作用範圍,可以將變數分為全域變數和區域變數。
定義位置: 在所有函數之外定義的變數。
作用範圍: 在整個程式中都可以被訪問和修改。
生命週期: 從程式開始執行到程式結束。
定義位置: 在函數內部定義的變數。
作用範圍: 僅限於定義它的函數內部。
生命週期: 從函數被調用開始,到函數執行結束。
x = 10 # 全域變數
def my_function():
y = 20 # 區域變數
print(x) # 可以訪問全域變數
print(y) # 只能在函數內訪問
my_function()
print(x) # 可以訪問全域變數
print(y) # 會報錯,因為 y 是區域變數,在函數外部無法訪問
為什麼需要 global
關鍵字?
一般來說,在函數內部,我們無法直接修改
函數外部定義的全域變數。
這是因為函數內部會創建一個新的命名空間,區域
變數會優先於全域變數。
然而,如果我們確實需要在函數內修改全域變數,就必須使用 global
關鍵字來明確告訴 Python 解釋器,
我們要操作的是全域變數,而不是創建一個新的區域變數。
global 關鍵字的用法
x = 10 # 全域變數
def my_function():
global x # 宣告 x 是全域變數
x = 20
my_function()
print(x) # 输出:20
在上面的例子中:
過度使用會降低程式碼的可讀性: 過多地使用 global 關鍵字會使程式碼變得複雜,難以追踪變數的變化。
可能產生意想不到的副作用: 如果多個函數都修改了同一個全域變數,可能會導致程式出現不可預測的行為。
示例:使用函數返回值
def increment(x):
return x + 1
x = 10
x = increment(x)
print(x) # 输出:11