最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解析python的局部變量和全局變量

 更新時(shí)間:2019年08月15日 11:58:17   作者:三國(guó)小夢(mèng)  
函數(shù)內(nèi)部定義的變量就叫局部變量而如果一個(gè)變量既能在一個(gè)函數(shù)中使用,也可以在其他函數(shù)中使用,這樣的變量就是全局變量。 本文給大家介紹python的局部變量和全局變量的相關(guān)知識(shí),感興趣的朋友一起看看吧

局部變量

什么是局部變量

通俗定義:函數(shù)內(nèi)部定義的變量就叫局部變量。

話不多說(shuō),代碼如下:

def test1():
 a = 300 # 定義一個(gè)局部變量a,并初始化300
 print("--test1--修改前:a=%s" % a)
 a = 200 # 給變量a重新賦值200
 print("--test1--修改后:a=%s" % a)
def test2():
 a = 400 # 定義另一個(gè)局部變量a,并初始化400
 print("--test2--修改后:a=%s" % a)
# 分別調(diào)用函數(shù)test1,test2
test1()
test2()

輸出:

--test1--修改前:a=300
--test1--修改后:a=200
--test2--修改后:a=400

結(jié)論:

  1. 局部變量就是在函數(shù)內(nèi)部定義的變量。
  2. 不同的函數(shù)內(nèi)部可以定義名字相同的變量,但它們不會(huì)產(chǎn)生影響。
  3. 局部變量的作用,為了臨時(shí)保存數(shù)據(jù)需要在需要在函數(shù)中定義變量來(lái)進(jìn)行存儲(chǔ)。

全局變量

什么是全局變量

定義:如果一個(gè)變量既能在一個(gè)函數(shù)中使用,也可以在其他函數(shù)中使用,這樣的變量就是全局變量。 

代碼如下:

a = 100 # 定義一個(gè)全局變量a,并初始化為100
# 分別定義函數(shù)test1、test2,功能是打印變量a的值
def test1():
 print(a)
def test2():
 print(a)
test1()
test2()
"""
結(jié)果如下:
100
100
"""

如何修改全局變量的值

首先,我們可能是這樣想的:

a = 100 # 定義一個(gè)全局變量a,并初始化為100
# 分別定義函數(shù)test1、test2
def test1():
 print("修改前:a=%s"%a)
 a = 300
 print("修改后:a=%s"%a)
def test2():
 print(2)
test1()
test2()
"""

結(jié)果如下:

UnboundLocalError: local variable 'a' referenced before assignment

異常解釋:局部變量a在被引用前沒(méi)有被定義

"""
那我們把函數(shù)test1中的內(nèi)容修改如下:

def test1():
 # print("修改前:a=%s"%a)
 a = 300
 print("修改后:a=%s"%a)

"""
結(jié)果如下:
修改后:a=300
100
"""

這次我們發(fā)現(xiàn),錯(cuò)誤消失了,函數(shù)test2中打印變量a的值并沒(méi)有改變還是100,這是為什么呢?

原因:如果一個(gè)全局變量在函數(shù)內(nèi)被重新定義過(guò),再在函數(shù)內(nèi)使用變量則默認(rèn)為局部變量;如果在函數(shù)內(nèi)沒(méi)有被定義,直接使用會(huì)被視為全局變量。

此時(shí),函數(shù)test1中的只是定義了一個(gè)名字相同的局部變量而已,并沒(méi)有改變?nèi)肿兞康闹怠?/p>

global的使用

這前我們想的法子都不能修改全局變量的值,這下就該認(rèn)識(shí)一個(gè)新的關(guān)鍵字 global ,它的功能就是如果需要在函數(shù)內(nèi)定義(修改)全局變量,則要先用global進(jìn)行聲明。

把之前的代碼修改如下:

a = 100 # 定義一個(gè)全局變量a,并初始化為100
# 分別定義函數(shù)test1、test2
def test1():
 global a # 聲明函數(shù)中使用的a是全局變量
 print("修改前:a=%s" % a)
 a = 300
 print("修改后:a=%s" % a)
def test2():
 print(2)
test1()
test2()

"""
結(jié)果如下:
修改前:a=100
修改后:a=300
300
"""

這下終于修改成功了。

可變類型與不可變類型的全局變量

發(fā)現(xiàn)我們之前定義的全局變量是數(shù)字類型,是屬于不可變類型的,那么修改一個(gè)可變類型的全局變量有什么不同呢?

a = [100, 200] # 定義一個(gè)列表全局變量a
# 分別定義函數(shù)test1、test2
def test1():
 print("修改前:a=%s" % a)
 a.append(300)
 print("修改后:a=%s" % a)
def test2():
 print(a)
test1()
test2()
"""

結(jié)果如下:

修改前:a=[100, 200]
修改后:a=[100, 200, 300]
[100, 200, 300]
"""

我們發(fā)現(xiàn)當(dāng)全局變量為可變類型時(shí),即使我們不是用global關(guān)鍵字聲明全局變量,它還是會(huì)被修改。

事實(shí)上:

  • 在函數(shù)中不是用global聲明全局變量時(shí)不能修改全局變量的本質(zhì)是不能修改全局變量的指向,即不能將全局變量指向新的數(shù)據(jù)。
  • 對(duì)于不可變類型的全局變量來(lái)說(shuō),因其指向的數(shù)據(jù)不能被修改,所以不是用global時(shí)無(wú)法修改全局變量。
  • 對(duì)于可變類型的全局變量來(lái)說(shuō),因其指向的數(shù)據(jù)可以改變,所以不用global時(shí)可以修改全局變量。

總結(jié)

以上所述是小編給大家介紹的python的局部變量和全局變量,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

最新評(píng)論

西峡县| 美姑县| 卢湾区| 茂名市| 兰溪市| 竹山县| 聊城市| 太湖县| 连江县| 南陵县| 正蓝旗| 澎湖县| 开江县| 利辛县| 迁安市| 盈江县| 云安县| 三河市| 日土县| 新宁县| 塔河县| 刚察县| 金湖县| 绿春县| 泰州市| 新宁县| 东乡族自治县| 海阳市| 尼玛县| 和林格尔县| 新竹县| 那坡县| 平山县| 安图县| 上犹县| 崇左市| 凤庆县| 加查县| 思茅市| 昌吉市| 昭苏县|