Python中全局變量的引用與修改之格式影響

先來看下面的代碼及執(zhí)行結(jié)果:

在崇川等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計、網(wǎng)站制作 網(wǎng)站設(shè)計制作按需求定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都全網(wǎng)營銷,成都外貿(mào)網(wǎng)站制作,崇川網(wǎng)站建設(shè)費用合理。

a = 1
b = [2,3]
def nums():
    a = 2
    b[0] = 0
    print(a)
    print(b)
print(a)
print(b)
nums()
print(a)
print(b)

結(jié)果:

1
[2, 3]
2
[0, 3]
1
[0, 3]
在學習過程中有什么不懂得可以加我的
python學習交流扣扣qun,784758214
群里有不錯的學習視頻教程、開發(fā)工具與電子書籍。
與你分享python企業(yè)當下人才需求及怎么從零基礎(chǔ)學習好python,和學習什么內(nèi)容

對上面結(jié)果的分析:

函數(shù) nums() 中重新定義了一個變量 a ,這個 a 是局部變量,與外面的全局變量沒有關(guān)系,而全局變量 列表 b 直接被引用過來進行修改了,同樣是全局變量為什么會有差別呢?

因為格式問題引發(fā)了歧義,容器類型的數(shù)據(jù)如,列表,字典,他們的修改和創(chuàng)建書寫格式全然不同,不會引發(fā)奇異,而數(shù)字,字符串類型變量的定義和修改都是用 = 鏈接,引發(fā)了格式上的歧義,所以,當Python解釋器遇到函數(shù)中的 “a = 2”這種格式時,不知道是 “引用全局變量a修改為2” 還是 “定義一個等于 2 的變量” ,從而引發(fā)歧義,為了確保全局變量對代碼其他部分產(chǎn)生更小的影響,Python默認為第二種——重新定義一個變量,來避免修改全局變量對整體代碼產(chǎn)生其他未知影響。

綜上所述:

本質(zhì):格式引發(fā)的歧義問題

運用:對于字典,列表不會因為格式問題引發(fā)歧義的,不用管他;對于數(shù)字,字符串來說,當引用與創(chuàng)建發(fā)生歧義時,Python解釋器默認創(chuàng)建新的變量,若不想創(chuàng)建,只是想修改全局變量,需要加global聲明,另外,如果只是單純的引用全局變量,而不會產(chǎn)生歧義的,如 對于全局變量 a 來說,b = a + 5,這里只是單純的使用,不會產(chǎn)生格式上的歧義問題,也不需要加global。

分享名稱:Python中全局變量的引用與修改之格式影響
網(wǎng)頁路徑:http://muchs.cn/article2/johioc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)面包屑導航、自適應網(wǎng)站、網(wǎng)站維護靜態(tài)網(wǎng)站、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)