黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

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

系統(tǒng) 2035 0

局部變量

什么是局部變量

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

話不多說,代碼如下:

            
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ù)中定義變量來進(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在被引用前沒有被定義

            
"""
那我們把函數(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的值并沒有改變還是100,這是為什么呢?

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

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

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ì)于不可變類型的全局變量來說,因其指向的數(shù)據(jù)不能被修改,所以不是用global時(shí)無法修改全局變量。
  • 對(duì)于可變類型的全局變量來說,因其指向的數(shù)據(jù)可以改變,所以不用global時(shí)可以修改全局變量。

總結(jié)

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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論