亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

Python 基礎(chǔ)教程

Python 流程控制

Python 函數(shù)

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

Python 文件操作

Python 對(duì)象和類

Python 日期和時(shí)間

Python 高級(jí)知識(shí)

Python 參考手冊(cè)

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

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

全局變量

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

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

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

x = "global"

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

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

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

內(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)行代碼時(shí),將輸出:

UnboundLocalError: local variable 'x' referenced before assignment

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

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

局部變量

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

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

def foo():
 y = "local"

foo()
print(y)

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

NameError: name 'y' is not defined

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

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

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

通常,我們?cè)诤瘮?shù)內(nèi)部聲明一個(gè)變量以創(chuàng)建局部變量。

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

foo()

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

local

讓我們看一下前面的問題,其中x是一個(gè)全局變量,我們想在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)行代碼時(shí),將輸出:

global global 
local

在上面的代碼中,我們將x聲明為全局變量,將y聲明為foo()中的局部變量。然后,我們使用乘法運(yùn)算符*來修改全局變量x,并同時(shí)輸出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)行代碼時(shí),將輸出:

local x: 10
global x: 5

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

當(dāng)我們?cè)趂oo()中打印變量時(shí),它輸出的是local x: 10。這稱為變量的局部作用域。

同樣,當(dāng)我們?cè)趂oo()外部打印變量時(shí),它會(huì)輸出global x: 5。這稱為變量的全局范圍。

非局部變量

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

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

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

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

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

outer()

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

inner: nonlocal
outer: nonlocal

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

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