在Python中,作用域是指變量和函數在代碼中的可見范圍。Python的作用域分為四種:局部作用域(Local)、嵌套局部作用域(Enclosing)、全局作用域(Global)和內置作用域(Built-in)。下面我們詳細討論一下局部作用域與其他作用域的區別:
示例:
def my_function():
local_var = 10 # 局部變量
print(local_var)
my_function() # 輸出:10
print(local_var) # 報錯:NameError: name 'local_var' is not defined
global
關鍵字聲明。示例:
global_var = 10 # 全局變量
def my_function():
global global_var # 聲明使用全局變量
global_var = 20 # 修改全局變量的值
my_function()
print(global_var) # 輸出:20
nonlocal
關鍵字聲明。示例:
def outer_function():
enclosing_var = 10 # 嵌套局部變量
def my_function():
nonlocal enclosing_var # 聲明使用嵌套局部變量
enclosing_var = 20 # 修改嵌套局部變量的值
my_function()
print(enclosing_var) # 輸出:20
outer_function()
print(enclosing_var) # 報錯:NameError: name 'enclosing_var' is not defined
示例:
def my_function():
print(len([1, 2, 3])) # 使用內置函數len()
my_function() # 輸出:3
總結一下,局部作用域與其他作用域的主要區別在于它們的作用范圍和生命周期。局部作用域僅在函數內部可見,生命周期僅限于函數執行期間。全局作用域在整個程序范圍內可見,生命周期貫穿整個程序執行過程。嵌套局部作用域在另一個函數內部定義,可以訪問其外部函數的局部變量。內置作用域包含Python內置函數和異常,在整個程序范圍內都可見。