Python 基礎(chǔ)教程

Python 流程控制

Python 函數(shù)

Python 數(shù)據(jù)類型

Python 文件操作

Python 對象和類

Python 日期和時間

Python 高級知識

Python 參考手冊

Python 全局,局部和非局部變量

在本文中,您將了解Python全局變量、局部變量、非局部變量以及在何處使用它們。

全局變量

在Python中,在函數(shù)外部或全局范圍內(nèi)聲明的變量稱為全局變量。這意味著可以在函數(shù)內(nèi)部或外部訪問全局變量。

讓我們看一下如何在Python中創(chuàng)建全局變量的示例。

示例1:創(chuàng)建一個全局變量

x = "global"

def foo():
 print("內(nèi)部 x:", x)

foo()
print("外部 x:", x)

當(dāng)我們運(yùn)行代碼時,將輸出:

內(nèi)部 x: global
外部 x: global

在上面的代碼中,我們將x創(chuàng)建為全局變量,并定義了foo()來打印全局變量x。最后,我們調(diào)用foo()將打印x值的。

如果要在函數(shù)內(nèi)更改x的值怎么辦?

x = "global"

def foo():
 x = x * 2
 print(x)
foo()

當(dāng)我們運(yùn)行代碼時,將輸出:

UnboundLocalError: local variable 'x' referenced before assignment

輸出顯示了一個錯誤,因?yàn)镻ython將x視為一個局部變量,并且x也沒有在foo()中定義。

為了實(shí)現(xiàn)這個功能,我們使用了全局關(guān)鍵字。要了解更多信息,請訪問Python全局關(guān)鍵字。

局部變量

在函數(shù)體內(nèi)或局部范圍內(nèi)聲明的變量稱為局部變量。

示例2:訪問范圍外的局部變量

def foo():
 y = "local"

foo()
print(y)

當(dāng)我們運(yùn)行代碼時,將輸出:

NameError: name 'y' is not defined

輸出顯示一個錯誤,因?yàn)槲覀冊噲D在全局范圍內(nèi)訪問一個局部變量y,而局部變量只在foo()或局部范圍內(nèi)工作。

讓我們看一個有關(guān)如何在Python中創(chuàng)建局部變量的示例。

示例3:創(chuàng)建局部變量

通常,我們在函數(shù)內(nèi)部聲明一個變量以創(chuàng)建局部變量。

def foo():
 y = "local"
 print(y)

foo()

當(dāng)我們運(yùn)行代碼時,它將輸出:

local

讓我們看一下前面的問題,其中x是一個全局變量,我們想在foo()內(nèi)部修改x。

全局和局部變量

在這里,我們將展示如何在同一代碼中使用全局變量和局部變量。

示例4:在同一代碼中使用全局變量和局部變量

x = "global"

def foo():
 global x
 y = "local"
 x = x * 2
 print(x)
 print(y)
 
foo()

當(dāng)我們運(yùn)行代碼時,將輸出:

global global 
local

在上面的代碼中,我們將x聲明為全局變量,將y聲明為foo()中的局部變量。然后,我們使用乘法運(yùn)算符*來修改全局變量x,并同時輸出x和y。

在調(diào)用foo()之后,x的值就變成了global global,因?yàn)槲覀兪褂脁 * 2來打印兩次global。然后,我們打印局部變量y的值,即局部變量。

示例5:具有相同名稱的全局變量和局部變量

x = 5

def foo():
 x = 10
 print("local x:", x)

foo()
print("global x:", x)

當(dāng)我們運(yùn)行代碼時,將輸出:

local x: 10
global x: 5

在上面的代碼中,我們對全局變量和局部變量使用了相同的名稱x。當(dāng)我們打印相同的變量時,會得到不同的結(jié)果,因?yàn)樽兞渴窃趦蓚€作用域中聲明的,即foo()內(nèi)的局部作用域和foo()外的全局作用域。

當(dāng)我們在foo()中打印變量時,它輸出的是local x: 10。這稱為變量的局部作用域。

同樣,當(dāng)我們在foo()外部打印變量時,它會輸出global x: 5。這稱為變量的全局范圍。

非局部變量

非局部變量用于未定義局部作用域的嵌套函數(shù)。這意味著該變量既不能在局部范圍內(nèi),也不能在全局范圍內(nèi)。

讓我們看一下如何在Python中創(chuàng)建全局變量的示例。

我們使用nonlocal關(guān)鍵字創(chuàng)建非局部變量。

示例6:創(chuàng)建一個非局部變量

def outer():
 x = "local"
 
 def inner():
 nonlocal x
 x = "nonlocal"
 print("inner:", x)
 
 inner()
 print("outer:", x)

outer()

當(dāng)我們運(yùn)行代碼時,將輸出:

inner: nonlocal
outer: nonlocal

在上面的代碼中,有一個嵌套函數(shù)inner()。 我們使用nonlocal關(guān)鍵字創(chuàng)建一個非局部變量。  inner()函數(shù)在另一個函數(shù)external()的范圍內(nèi)定義。

注意:如果我們改變了非局部變量的值,這些改變就會出現(xiàn)在局部變量中。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清