欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統 1775 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條評論
主站蜘蛛池模板: 香蕉国产人午夜视频在线观看 | 欧美视频区 | 三上悠亚2022最新番号 | 成人国产精品齐天大性 | 久久国产精品精品国产 | 欧美在线一级精品 | 国产成人99久久亚洲综合精品 | 一级毛片真人免费观看 | 1024污视频 | 日本不卡一区在线观看 | 国产一级做a爰片在线 | 亚洲免费观看视频 | 亚洲精品国精品久久99热 | 欧美日韩色综合网站 | 日韩免费毛片 | 色妇影院 | 99在线精品视频免费观里 | 中文字幕自拍偷拍 | 欧美人妖在线 | 亚欧洲精品bb | 亚洲色婷婷久久精品AV蜜桃久久 | 操操操日日日干干干 | 欧美色黄视频 | 成人天堂资源www在线 | 日本高清精品 | 日本一区二区视频在线 | 免费免费啪视频在线 | 亚洲成色www久久网站 | 日韩美女一区二区三区在线观看 | 国产传媒在线视频 | 这里只有精品99re | 国产免费A片好硬好爽好深小说 | 国产精品午夜小视频观看 | 亚洲黄色网址 | 欧美激情一区二区三区视频高清 | 成人亚洲网站 | 久久精品二区亚洲w码 | 亚洲欧美精品综合中文字幕 | 欧美激情在线观看一区二区三区 | 欧美18—19sex性hd按摩 | 日韩欧美高清 |