![中職電子與信息:《yhon小屋》3-3-3 變量作用域_第1頁(yè)](http://file4.renrendoc.com/view/8ea3f2354313bf8ac54248a3d4869b15/8ea3f2354313bf8ac54248a3d4869b151.gif)
![中職電子與信息:《yhon小屋》3-3-3 變量作用域_第2頁(yè)](http://file4.renrendoc.com/view/8ea3f2354313bf8ac54248a3d4869b15/8ea3f2354313bf8ac54248a3d4869b152.gif)
![中職電子與信息:《yhon小屋》3-3-3 變量作用域_第3頁(yè)](http://file4.renrendoc.com/view/8ea3f2354313bf8ac54248a3d4869b15/8ea3f2354313bf8ac54248a3d4869b153.gif)
![中職電子與信息:《yhon小屋》3-3-3 變量作用域_第4頁(yè)](http://file4.renrendoc.com/view/8ea3f2354313bf8ac54248a3d4869b15/8ea3f2354313bf8ac54248a3d4869b154.gif)
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
234567234567globalxx=3y=4?>x=5?>demo()10全局變量:3?>?>x3?>y#在函數(shù)外部定義了全局變量x局部變量:4#嘗試著在函數(shù)外部訪(fǎng)問(wèn)一下函數(shù)的局部變量《Python小屋》之三程序控制結(jié)構(gòu)與函數(shù)設(shè)計(jì)3.3函數(shù)設(shè)計(jì)與使用變量作用域變量起作用的代碼范圍稱(chēng)為變量的作用域,不同作用域內(nèi)同名變量之間互不影響,就想不同文件夾的同名文件之間互不影響一樣。一個(gè)變量在函數(shù)外部定義和在函數(shù)內(nèi)部定義,其作用域是不同的,函數(shù)內(nèi)部定義的變量一般為局部變量,在函數(shù)外部定義的變量為全局變量。在函數(shù)內(nèi)部定義的普通變量只在該函數(shù)內(nèi)起作用,當(dāng)函數(shù)運(yùn)行結(jié)束后,在其內(nèi)部定義的局部變量將被自動(dòng)刪除而不可訪(fǎng)問(wèn)。在函數(shù)內(nèi)部定義的全局變量當(dāng)函數(shù)結(jié)束以后仍然存在并且可以訪(fǎng)問(wèn)。如果想要在函數(shù)內(nèi)部修改一個(gè)定義在函數(shù)外的變量值,那么這個(gè)變量就不能是局部的,其作用域必須是全局的??梢栽诤瘮?shù)內(nèi)部通過(guò)global關(guān)鍵字來(lái)聲明或定義全局變量,這分兩種情況:(1)一個(gè)變量已在函數(shù)外定義,如果在函數(shù)內(nèi)需要修改這個(gè)變量的值,并將這個(gè)賦值結(jié)果反映到函數(shù)之外,可以在函數(shù)內(nèi)部用global明確聲明要使用已定義的同名全局變量。(2)在函數(shù)內(nèi)部直接使用global關(guān)鍵字將一個(gè)變量聲明為全局變量,如果在函數(shù)外沒(méi)有定義該全局變量,在調(diào)用這個(gè)函數(shù)之后,會(huì)自動(dòng)增加新的全局變量?;蛘哒f(shuō),也可以這樣理解:在函數(shù)內(nèi)如果值引用某個(gè)變量的值而沒(méi)有為其賦新值,該變量為(隱式的)全局變量;<2〉如果在函數(shù)內(nèi)任意位置有為變量賦值的操作,該變量即被認(rèn)為是(隱式的)局部變量,除非在函數(shù)內(nèi)顯式地用global進(jìn)行聲明。下面的代碼演示了局部變量和全局變量的用法。1?>defdemo():#聲明或創(chuàng)建全局變量#修改全局變量的值#局部變量print(,全局變量:{}局部變量:{}'.format(x,y))15Traceback(mostrecentcalllast):16File"<pyshell#ll>,,/line1,in<module>y#嘗試著在函數(shù)外部訪(fǎng)問(wèn)一下函數(shù)的局部變量NameError:name'y'isnotdefined?>?>delx#刪除在函數(shù)外部定義的全局變量?>?>x#嘗試訪(fǎng)問(wèn)一下全局變量xTraceback(mostrecentcalllast):File,,<pyshell#15>",line1,in<module>x#嘗試訪(fǎng)問(wèn)一下全局變量xNameError:name'x'isnotdefined?>?>demo()#再調(diào)用一次函數(shù),該函數(shù)會(huì)聲明全局變量哦29全局變量:3局部變量:4?>?>x#在函數(shù)內(nèi)部創(chuàng)建了全局變量x3?>?>v#局部變量在函數(shù)調(diào)用結(jié)束后自動(dòng)刪除Traceback(mostrecentcalllast):36File"<pyshell#21>"/line1,in<module>yNameError:name'y1isnotdefined?>代碼塊如果局部變量與全局具有相同的名字,那么改局部變量會(huì)在自己的作用域內(nèi)隱藏同名的全局變量,例如下面的代碼所演示。?>defdemo():x=3#創(chuàng)建了局部變量,并自動(dòng)隱藏了同名的全局變量print(x)?>x=5#創(chuàng)建全局變量?>x85?>?>demo()113?>x#函數(shù)調(diào)用后,不影響全局變量x的值5?>16#個(gè)人理解:17#局部變量的作用范圍是函數(shù)體內(nèi),即使和全局變量同名了,在函數(shù)體內(nèi)修改局部變量的值,也不會(huì)影響全局變量的值1819#在函數(shù)外修改全局變量的值,不會(huì)影響函數(shù)體內(nèi)局部變量的值代碼塊最后,如果需要在同一個(gè)程序的不同模塊之間共享全局變量,可以編寫(xiě)一個(gè)專(zhuān)門(mén)的模塊來(lái)實(shí)現(xiàn)這一目的。例如,假設(shè)在模塊A.py中有如下變量定義:global_variable=0而在模塊B.py中使用以下語(yǔ)句修改全局變量的值:importAA.global_variable=1在模塊C.py中使用以下語(yǔ)句來(lái)訪(fǎng)問(wèn)全局變量的值:importAprint(A.global_variable)小提示:(1)一般而言,局部變量的引用比全局變量速度快,應(yīng)優(yōu)先考慮使用;(2)應(yīng)盡量避免過(guò)多使用全局變量,因?yàn)槿肿兞繒?huì)增加不同函數(shù)之間的隱式耦合度,降低代碼可讀性,并使得代碼測(cè)試和糾錯(cuò)變得很困難。拓展知識(shí):局部變量的空間是在棧上分配的,而棧空間是由操作系統(tǒng)維護(hù)的,每當(dāng)調(diào)用一個(gè)函數(shù)時(shí),操作系統(tǒng)會(huì)為其分配一個(gè)棧幀,函數(shù)調(diào)用結(jié)束后立刻釋放這個(gè)棧幀。因此,函數(shù)調(diào)用結(jié)束后,該函數(shù)內(nèi)部所有的局部變量都不再存在。拓展知識(shí):除了局部變量和全局變量,Python還支持nonlocal關(guān)鍵字定義一種介于兩者之間的變量。例如下面代碼:defscope_test():defdo_local():spam='我是局部變量'defdo_nonlocal():nonlocalspam#這時(shí)要求spam必須是已存在的變量spamd我不是局部變量,也不是全局變量’defdo_global():globalspam#如果全局作用域內(nèi)沒(méi)有spam,就自動(dòng)創(chuàng)建一個(gè)spam='我是全局變量’spam=1原來(lái)的值,do_local()print('局部變量賦值后:[spam)do_nonlocal()print('nonlocal變量賦值后。spam)do_global()20print('全局變量賦值后spam)212223scope_test()24print('全局變量:',spam)2526#局部變量賦值后:原來(lái)的值27#nonlocal變量賦值后:我不是局部變量,也不是全局
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球晶圓檢測(cè)用物鏡行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)鉆頭修磨機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球醫(yī)療器械用注塑機(jī)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 主講人鄭長(zhǎng)花
- 第06講 我們生活的大洲-亞洲(解析版)
- 2025原料采購(gòu)合同的模板
- 2025個(gè)人保證擔(dān)保借款合同
- 門(mén)面房房屋租賃合同范本
- 工地配餐合同協(xié)議書(shū)范本
- it運(yùn)維外包服務(wù)合同
- 2025公司開(kāi)工大吉蛇年起航萬(wàn)象啟新模板
- GB/T 11263-2024熱軋H型鋼和剖分T型鋼
- 執(zhí)業(yè)醫(yī)師資格考試《臨床執(zhí)業(yè)醫(yī)師》 考前 押題試卷(一)絕密1
- 2024七年級(jí)數(shù)學(xué)上冊(cè)第六章幾何圖形初步綜合與實(shí)踐設(shè)計(jì)學(xué)校田徑運(yùn)動(dòng)會(huì)比賽場(chǎng)地課件新版新人教版
- 全國(guó)網(wǎng)約車(chē)出租車(chē)駕駛員公共題模擬考試題及答案
- 新人教版一年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)教案(表格式)
- 簡(jiǎn)易三方換地協(xié)議書(shū)范本
- 2025屆廣東省深圳羅湖區(qū)四校聯(lián)考九上數(shù)學(xué)期末綜合測(cè)試試題含解析
- 飛鼠養(yǎng)殖技術(shù)指導(dǎo)
- 2024年襄陽(yáng)漢江檢測(cè)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 醫(yī)院檢驗(yàn)科安全風(fēng)險(xiǎn)評(píng)估報(bào)告表單
評(píng)論
0/150
提交評(píng)論