定義:全局變量是在函數(shù)外部定義的變量(沒(méi)有定義在某一個(gè)函數(shù)內(nèi)),所有函數(shù)內(nèi)部都可以使用這個(gè)變量。
代碼體驗(yàn):
# 定義一個(gè)全局變量num = 99def demo1(): print('demo1 ===> %d' % num)def demo2(): print('demo2 ===> %d' % num)# 調(diào)用函數(shù)demo1()demo2()print('完畢')
執(zhí)行結(jié)果:
下面利用PyCharm的調(diào)試工具單步跟蹤技巧來(lái)看看上面的代碼執(zhí)行的細(xì)節(jié)。
步驟:
在第二行的變量前打上斷點(diǎn),然后調(diào)出debug調(diào)試,會(huì)出來(lái)一個(gè)版塊,下面對(duì)這個(gè)版塊做個(gè)圖片介紹。
具體步驟:當(dāng)斷點(diǎn)在第二行num變量時(shí),我們點(diǎn)擊debug工具出來(lái)面板后,點(diǎn)擊單步操作按鈕,在變量num后面會(huì)出現(xiàn)一行‘num:99’,同時(shí)版塊下面的右側(cè)區(qū)域會(huì)出現(xiàn)變量num執(zhí)行結(jié)果,左側(cè)區(qū)域會(huì)出現(xiàn)相對(duì)應(yīng)的數(shù)據(jù)信息,接著點(diǎn)擊單步操作,代碼執(zhí)行在第四行,由于是一個(gè)demo1函數(shù)此時(shí)并不執(zhí)行函數(shù)內(nèi)部的代碼塊,接著單步操作,此時(shí)又是一個(gè)函數(shù)demo2還是不執(zhí)行內(nèi)部代碼塊,在點(diǎn)擊單步操作,到了第10行,緊接著點(diǎn)擊單步操作跳轉(zhuǎn)到了第5行執(zhí)行demo1中代碼塊,此時(shí)下面的版塊左側(cè)區(qū)域多出來(lái)一行,也就是上圖顯示的‘demo1,demo.py:5’,點(diǎn)擊單步操作跳轉(zhuǎn)到了第10行,再單擊單步操作到了第11行,然后重復(fù)上面demo1的步驟,最后兩個(gè)函數(shù)都執(zhí)行完成后,最后執(zhí)行print(‘完畢’)。
以上就是代碼全部的執(zhí)行過(guò)程,可能我寫(xiě)的過(guò)程不是特別詳細(xì),大家還是打開(kāi)PyCharm把上面的代碼固執(zhí)下來(lái)自己嘗試一遍看看結(jié)果和過(guò)程。
總結(jié):主要看調(diào)試工具中左側(cè)區(qū)域中,在左側(cè)區(qū)域可以看到當(dāng)前將要執(zhí)行的是哪一行代碼,還可以看到當(dāng)前是否在執(zhí)行某一個(gè)函數(shù),調(diào)用函數(shù)的時(shí)候,左側(cè)區(qū)域就會(huì)告訴我們當(dāng)前執(zhí)行的函數(shù)名稱(chēng),同時(shí)變量區(qū)域會(huì)顯示當(dāng)前這個(gè)函數(shù)內(nèi)部的局部變量,不會(huì)直接顯示模塊中的變量,如果要查看模塊中的變量直接點(diǎn)擊左側(cè)區(qū)域的模塊那一行即可。
使用全局變量要求:
一句話:在函數(shù)內(nèi)部,不允許直接修改全局變量的值
在函數(shù)內(nèi)部,可以通過(guò)全局變量的應(yīng)用獲取對(duì)應(yīng)的數(shù)據(jù)(也就是可以訪問(wèn)全局變量中的數(shù)據(jù))
,但是,不允許直接修改全局變量的引用(使用賦值語(yǔ)句修改全局變量的值)
代碼體驗(yàn):
我們希望在demo1函數(shù)中修改全部變量的值是10,然后也希望demo2輸出的num變量是我們想修改的數(shù)據(jù)10.
# 定義一個(gè)全局變量num = 99def demo1(): # 希望修改全局變量的值 # 在Python中,是不允許直接修改全局變量的值 # 如果使用賦值語(yǔ)句,會(huì)在函數(shù)內(nèi)部定義一個(gè)局部變量,只是這個(gè)變量的名字和全局變量的名字相同而已 num = 10 print('demo1 ===> %d' % num)def demo2(): print('demo2 ===> %d' % num)demo1()demo2()
執(zhí)行結(jié)果:
以上可以看出,demo1函數(shù)中的變量結(jié)果是10,可是這個(gè)10并不是修改了全局變量num而得到的,是因?yàn)閮H僅只是在函數(shù)demo1中重新定義了一個(gè)局部變量num = 10,變量名字相同而已。由于全局變量的值并沒(méi)有被修改,所以demo2的結(jié)果仍然是99。
注意: 函數(shù)執(zhí)行時(shí),需要處理變量是會(huì):
1. 首先查找函數(shù)內(nèi)部是否存在指定名稱(chēng)的局部變量,如果有,直接使用
2. 如果沒(méi)有,查找函數(shù)外部是否存在指定名稱(chēng)的全局變量,如果有,直接使用
3. 如果還沒(méi)有,程序報(bào)錯(cuò)
文章借鑒鏈接:http://www.wakey.com.cn/
本文發(fā)布于:2023-02-28 21:08:00,感謝您對(duì)本站的認(rèn)可!
本文鏈接:http://www.newhan.cn/zhishi/a/1677729769104661.html
版權(quán)聲明:本站內(nèi)容均來(lái)自互聯(lián)網(wǎng),僅供演示用,請(qǐng)勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除。
本文word下載地址:定義全局變量(定義全局變量的關(guān)鍵字).doc
本文 PDF 下載地址:定義全局變量(定義全局變量的關(guān)鍵字).pdf
| 留言與評(píng)論(共有 0 條評(píng)論) |