亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統 1710 0

局部變量

什么是局部變量

通俗定義:函數內部定義的變量就叫局部變量。

話不多說,代碼如下:

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

輸出:

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

結論:

  1. 局部變量就是在函數內部定義的變量。
  2. 不同的函數內部可以定義名字相同的變量,但它們不會產生影響。
  3. 局部變量的作用,為了臨時保存數據需要在需要在函數中定義變量來進行存儲。

全局變量

什么是全局變量

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

代碼如下:

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

如何修改全局變量的值

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

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

結果如下:

UnboundLocalError: local variable 'a' referenced before assignment

異常解釋:局部變量a在被引用前沒有被定義

            
"""
那我們把函數test1中的內容修改如下:

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

"""
結果如下:
修改后:a=300
100
"""
          

這次我們發現,錯誤消失了,函數test2中打印變量a的值并沒有改變還是100,這是為什么呢?

原因:如果一個全局變量在函數內被重新定義過,再在函數內使用變量則默認為局部變量;如果在函數內沒有被定義,直接使用會被視為全局變量。

此時,函數test1中的只是定義了一個名字相同的局部變量而已,并沒有改變全局變量的值。

global的使用

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

把之前的代碼修改如下:

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

"""
結果如下:
修改前:a=100
修改后:a=300
300
"""
          

這下終于修改成功了。

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

發現我們之前定義的全局變量是數字類型,是屬于不可變類型的,那么修改一個可變類型的全局變量有什么不同呢?

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

結果如下:

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

我們發現當全局變量為可變類型時,即使我們不是用global關鍵字聲明全局變量,它還是會被修改。

事實上:

  • 在函數中不是用global聲明全局變量時不能修改全局變量的本質是不能修改全局變量的指向,即不能將全局變量指向新的數據。
  • 對于不可變類型的全局變量來說,因其指向的數據不能被修改,所以不是用global時無法修改全局變量。
  • 對于可變類型的全局變量來說,因其指向的數據可以改變,所以不用global時可以修改全局變量。

總結

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产91亚洲精品 | 亚洲国产精品一区二区首页 | 午夜私人影院粉色视频我要 | 成人国产一区二区 | 欧美成人特黄级毛片 | 久久成年人 | 精品91自产拍在线观看一区 | 久草在线视频精品 | 久久伊人亚洲 | 高清在线一区二区三区亚洲综合 | 久久久国产乱子伦精品 | 老子影院午夜伦不卡 | 亚洲欧美中日韩 | 亚洲精品久久久久久动漫剧情 | 思思91精品国产综合在线 | 2021国产精品久久久久 | 九九这里有精品 | 国产我不卡 | 欧美精欧美乱码一二三四区 | 色综合久久六月婷婷中文字幕 | 深夜福利免费 | 日韩黄色网页 | 精品在线视频播放 | 久久精品免视国产 | 欧美毛片日韩一级在线 | 欧美一级毛片欧美一级无片 | 国产亚洲精品美女久久久 | 一级毛片视频在线 | 国产欧美精品综合一区 | 日本一区视频在线 | 麻豆狠色伊人亚洲综合网站 | 亚洲你我色 | 四虎网站 | 国产精品图片 | 99久久精品免费观看国产 | 亚洲爱v | 午夜精品久久久久久99热 | 伊人365影院| 国产亚洲精品美女 | 在线91精品亚洲网站精品成人 | 欧美另类videos粗暴黑人 |