




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
深入淺出Python編程
(
函數(shù)與代碼復(fù)用)獲取照片拍攝地址信息
獲取照片的經(jīng)緯度信息根據(jù)經(jīng)緯度反查詢地址通過API地理逆編碼解析地址Outcome單元目標(biāo)/Objectives理解代碼的復(fù)用
熟練掌握函數(shù)的定義和調(diào)用
理解函數(shù)的返回值
理解函數(shù)的傳值和傳引用
掌握函數(shù)的多種參數(shù)傳遞方式⑥
具有個人信息保護(hù)和國家版圖意識內(nèi)容及計劃/Agenda&Schedule8/6ClassHoursDetails專科應(yīng)用本科<00:10><00:10>回顧&成果介紹<00:25><00:25>認(rèn)識函數(shù)&函數(shù)的簡單使用<01:20><01:00>使用位置參數(shù)獲取照片經(jīng)緯度<01:20><01:00>使用關(guān)鍵字參數(shù)查詢地址信息<01:00><00:40>使用默認(rèn)值參數(shù)查詢地址信息<01:00><00:40>使用不定長參數(shù)查詢地址信息<00:05><00:05>課堂小結(jié)Total:8/6hours(6/4hPractice)01照片位置信息Photolocation1.任務(wù)分析目標(biāo)解構(gòu)從照片文件提取GPS經(jīng)緯度數(shù)據(jù)利用逆地理編碼查詢地址模式識別借助第三方Python包從文件中讀取照片文件的元數(shù)據(jù)地理逆編碼可以借助Python第三方模塊實(shí)現(xiàn)或者:通過地圖服務(wù)商提供的逆地理編碼WebAPI查詢實(shí)現(xiàn)1.任務(wù)分析模式歸納打印照片的經(jīng)緯度坐標(biāo)信息和查詢照片拍攝地址信息都需要重復(fù)用獲取照片GPS經(jīng)緯度數(shù)據(jù)的代碼,為提高代碼的復(fù)用,可以將該功能模塊封裝成一個Python函數(shù)算法設(shè)計使用exifread模塊讀取照片的GPS信息使用geopy模塊對地理逆編碼查詢/從經(jīng)緯度查地址使用天地圖地圖服務(wù)的WebAPI查詢地址信息2.任務(wù)準(zhǔn)備exifread模塊Exif(Exchangeableimagefileformat)交換圖像文件格式是專門為數(shù)碼相機(jī)的照片設(shè)定的,可以記錄數(shù)碼照片的屬性信息和拍攝數(shù)據(jù)地理編碼和逆編碼地理編碼是將地址作為輸入,然后將其轉(zhuǎn)換為地圖上的位置,也就是將地址轉(zhuǎn)換為經(jīng)緯度坐標(biāo)(緯度和經(jīng)度)。逆地理編碼剛好相反,它是從緯度和經(jīng)度坐標(biāo)開始,使用其對應(yīng)的街道、城市等名稱來標(biāo)識地址。詳細(xì)地址(北京市東城區(qū)景山前街4號故宮博物院)地理坐標(biāo)(116.39,39.92)地理編碼逆地理編碼2.任務(wù)準(zhǔn)備geopy模塊一個比較流行的GEO編碼Web服務(wù)客戶端geopy不負(fù)責(zé)地理編碼服務(wù)的數(shù)據(jù)庫,地理編碼由許多不同的服務(wù)商提供,它只是一個在單個包中為不同服務(wù)提供這些實(shí)現(xiàn)的庫大部分的API服務(wù)都需要申請開發(fā)者Key,其中Nominatim是免費(fèi)的,提供低訪問請求,高并發(fā)、頻繁的訪問可能會被拒絕02認(rèn)識函數(shù)function1.函數(shù)的定義和調(diào)用—
使用函數(shù)復(fù)用代碼函數(shù)(function)就是實(shí)現(xiàn)某一個特定功能的代碼塊語法格式:建議命名函數(shù)用lowercase_with_underscores,即只用小寫字母單詞函數(shù)名稱后面的一對圓括號,即使沒有參數(shù),也需要保留1.函數(shù)的定義和調(diào)用—
使用函數(shù)復(fù)用代碼使用函數(shù),減少重復(fù)代碼1.函數(shù)的定義和調(diào)用—
函數(shù)的形參與實(shí)參函數(shù)的參數(shù)形參(parameter):定義函數(shù)時,在函數(shù)聲明中定義的變量。實(shí)參(argument):調(diào)用函數(shù)時,給定函數(shù)調(diào)用/執(zhí)行的變量把差異參數(shù)化把函數(shù)看成是一個“通用”的模板不同的部分用一個符號/參數(shù)替代1.函數(shù)的定義和調(diào)用—
函數(shù)的返回值return語句如果函數(shù)沒有return語句,Python將認(rèn)為該函數(shù)以returnNone既可以用return語句返回數(shù)值、字符串等單個、單值,也可以用return語句返回列表、元組、字典、集合等多值2.函數(shù)的編碼風(fēng)格文檔字符串(docstring)函數(shù)內(nèi)的第一條語句是字符串時,該字符串就是文檔字符串利用文檔字符串可以自動生成在線文檔或打印版文檔,還可以讓開發(fā)者在瀏覽代碼時直接查閱文檔2.函數(shù)的編碼風(fēng)格函數(shù)注解(annotations)用戶自定義函數(shù)類型的元數(shù)據(jù)完整信息注解以字典的形式存放在函數(shù)的__annotations__屬性中形參注解的定義方式是在形參名后加冒號“:”,后面跟一個表達(dá)式,該表達(dá)式會被求值為標(biāo)注的值返回值注解的定義方式是加組合符號“->”,后面跟一個表達(dá)式,該標(biāo)注位于形參列表和表示def語句結(jié)束的冒號之間創(chuàng)建并使用函數(shù):defprint_city_info(my_city):03使用位置參數(shù)獲取照片經(jīng)緯度positionparameter1.參數(shù)的傳值和傳引用傳值(value):當(dāng)參數(shù)類型為固定/不可變數(shù)據(jù)類型時(如數(shù)值、字符串、元組等),在函數(shù)內(nèi)部直接修改形參的值不會影響實(shí)參傳引用/傳址(address):當(dāng)參數(shù)類型為可變數(shù)據(jù)類型時(如列表、字典、集合等),在函數(shù)內(nèi)部使用下標(biāo)或其他方式為其增加、刪除或修改元素值時,修改后的結(jié)果是可以反映到函數(shù)之外的,即實(shí)參也會得到相應(yīng)的修改1.參數(shù)的傳值和傳引用傳值(value)vs.傳引用/傳址(address)1.參數(shù)的傳值和傳引用避免實(shí)參被修改2.獲取照片的坐標(biāo)數(shù)據(jù)“一點(diǎn)一線,皆是河山”“規(guī)范使用地圖,一點(diǎn)都不能錯。”返回GPS信息經(jīng)度、緯度和高度等3個值地理坐標(biāo)系(GCS,GeographicCoordinateSystem)使用三維球面來定義地球上的位置,點(diǎn)(point)要素可通過其經(jīng)度(longitude)和緯度(latitude)值進(jìn)行引用國家大地坐標(biāo)系:CGCS-2000(CGCS,ChinaGeodeticCoordinateSystem2000)GPS坐標(biāo)大多都是WGS-84(WorldGeodeticSystem-1984)坐標(biāo)
2.獲取照片的坐標(biāo)數(shù)據(jù)DMS
(degree/度,minute/分,second/秒)DD(decimaldegree)在調(diào)用函數(shù)傳遞參數(shù)時,實(shí)參和形參的順序必須嚴(yán)格一致,并且實(shí)參和形參的數(shù)量必須相同,這種嚴(yán)格按位置來傳遞參數(shù)稱之為位置參數(shù)(positionalparameters)。以位置參數(shù)調(diào)用形式獲取照片經(jīng)緯度坐標(biāo)值04使用關(guān)鍵字參數(shù)查詢地址信息KeywordArguments1.關(guān)鍵字參數(shù)傳入經(jīng)度和緯度,使用Nominatim地圖服務(wù)來進(jìn)行地址信息查詢。注意參數(shù)的順序,緯度在前,經(jīng)度在后。關(guān)鍵字參數(shù)(KeywordArguments)是指在函數(shù)調(diào)用中前面帶有標(biāo)識符,形如:kwarg=value的參數(shù)傳遞方式,也即一種按參數(shù)名字傳遞值的方式。1.關(guān)鍵字參數(shù)關(guān)鍵字參數(shù)比位置參數(shù)更具優(yōu)勢:位置參數(shù)傳參容易出錯:不小心把經(jīng)度和緯度的順序搞反了將會收到一條錯誤提示信息:“ValueError:Latitudemustbeinthe[-90;90]range.”位置參數(shù)傳參程序的可讀性也比較差以關(guān)鍵字參數(shù)調(diào)用形式進(jìn)行逆地理信息查詢照片地址05使用默認(rèn)值參數(shù)查詢地址信息DefaultArgumentValues1.什么是默認(rèn)值參數(shù)定義函數(shù)時,可以給函數(shù)的形參賦予默認(rèn)值,這個參數(shù)被稱為默認(rèn)值參數(shù)(DefaultArgumentValues)。定義一個帶默認(rèn)值參數(shù)的函數(shù),只需要在形參變量的后面用賦值符為該形參賦一個值即可在調(diào)用函數(shù)時,如果不給該形參傳遞值,則該形參就使用定義時賦予的默認(rèn)值。可以使用“函數(shù)名.__defaults__”查看函數(shù)所有默認(rèn)值參數(shù)的當(dāng)前值2.天地圖逆地理服務(wù)API查詢照片地址APIhttp://xxx.xx.xx.xx/geocoder?postStr={'lon':116.37304,'lat':39.92594,'ver':1}&type=geocode&tk=你自己的密鑰除了經(jīng)度、緯度和開發(fā)者Key之外,其余部分基本都是固定的,特別是URL的域名、版本號等就可以設(shè)置為默認(rèn)值參數(shù)2.天地圖逆地理服務(wù)API查詢照片地址默認(rèn)值參數(shù):domain='http://xx.xx.xx.xx’ver=1使用默認(rèn)值參數(shù)調(diào)用天地圖API查詢照片地址信息06使用不定長參數(shù)查詢地址信息ArbitraryArgument1.不定長參數(shù)Python允許函數(shù)在執(zhí)行/調(diào)用中接受任意數(shù)量的實(shí)參,也即可變參數(shù)或不定長參數(shù)(ArbitraryArgument)*args:接收任意多個實(shí)參,并將其解包到一個元組中**kwargs:接收任意多個關(guān)鍵字參數(shù),并將其解包到一個字典中結(jié)合位置參數(shù)一起使用時,必須將不定長參數(shù)放在位置參數(shù)的最后,且*args和**kwargs同時出現(xiàn)時,*args在**kwargs的前面Python先匹配位位置實(shí)參再將剩余的位置參數(shù)裝入到*args最后將剩余的關(guān)鍵字參數(shù)轉(zhuǎn)入到**kwargs2.參數(shù)的解包按單值、多個傳遞:根據(jù)順序逐一傳遞變量解包方式:解包實(shí)參變量傳遞使用不定長參數(shù)查詢照片地址信息課堂小結(jié)函數(shù)是一種僅在調(diào)用時運(yùn)行的代碼塊,函數(shù)讓我們編寫的代碼可供重復(fù)使用,既能提供代碼的復(fù)用率,也讓代碼更易于維護(hù)。形參是指出現(xiàn)在函數(shù)定義中的名稱,而實(shí)參則是在調(diào)用函數(shù)時實(shí)際傳入的值。有傳值和傳引用兩種方式,為了防止傳引用對實(shí)參的修改影響到形參,可以傳遞實(shí)參的拷貝。函數(shù)可以按位置、或通過關(guān)鍵字/命名參數(shù)(namedargument)傳遞參數(shù)值,也可以通過打包/解包使用不定長參數(shù)傳遞。函數(shù)可以把數(shù)據(jù)作為結(jié)果返回,可以使用return語句顯示指明函數(shù)的返回值,沒有return語句時,默認(rèn)為returnNone。提問&解答深入淺出Python編程
(
函數(shù)與代碼復(fù)用)批量創(chuàng)建文件夾GUI工具
從Excel的排考文件中提取數(shù)據(jù)父文件夾名稱為:場次[日期]考試科目名稱,形如「第2場[2021-12-01]Python運(yùn)維開發(fā)
」文件夾名稱為:[考場號]班級,形如「[4-101]云計算2001班
」Outcome單元目標(biāo)/Objectives理解函數(shù)式編程及高階函數(shù)
理解變量作用域及嵌套函數(shù)
能編寫閉包函數(shù)及生成器、裝飾器函數(shù)
能夠利用GUI庫編寫Window程序
掌握Python的模塊和包⑥具有精益求精的工匠精神內(nèi)容及計劃/Agenda&Schedule6ClassHoursDetails<00:10>回顧&成果介紹<00:30>模塊、包,以及項目目錄規(guī)劃<01:00>高階函數(shù)拼接父子目錄路徑<01:00>生成器迭代器進(jìn)行流水號計數(shù)<01:00>閉包及裝飾器實(shí)現(xiàn)進(jìn)度條<00:35>打包應(yīng)用程序<00:05>課堂小結(jié)Total:6hours(4hPractice)01文件夾創(chuàng)建工具GUITools1.任務(wù)分析目標(biāo)解構(gòu)WindowsGUI界面的實(shí)現(xiàn)從Excel中提取數(shù)據(jù)、分析數(shù)據(jù)和拼接數(shù)據(jù)創(chuàng)建父、子文件夾模式識別GUI:第三方模塊,消息事件驅(qū)動機(jī)制來編程Excel數(shù)據(jù)讀取:第三方模塊創(chuàng)建目錄:OS模塊編程接口來創(chuàng)建文件夾1.任務(wù)分析模式歸納考慮將不同的功能模塊進(jìn)行拆分,也就是需要對多代碼文件進(jìn)行組織對于排考場次的計數(shù)、創(chuàng)建進(jìn)度條等可以運(yùn)用高階函數(shù),采用函數(shù)式編程的方法實(shí)現(xiàn)算法設(shè)計采用PySimpleGUI庫來構(gòu)建GUI界面;xlrd模塊讀取Excel文件數(shù)據(jù)創(chuàng)建一個utils的包存放主模塊以外的代碼map()高階函數(shù)將排考數(shù)據(jù)做拼接映射;生成器、閉包函數(shù)做場次流水號計數(shù);裝飾器提供進(jìn)度條2.任務(wù)準(zhǔn)備xlrd模塊讀取Excel文件的庫,可以實(shí)現(xiàn)指定表單、指定單元格的讀取高版本Excel文件的讀取需要安裝指定的版本/pipinstallxlrd==1.2.0pyinstaller模塊分析代碼并發(fā)現(xiàn)Python代碼執(zhí)行所依賴的所有其他模塊PySimpleGUI使用初學(xué)者理解的Python數(shù)據(jù)類型(列表和字典),簡化了窗口定義,能將tkinter、Qt、WxPython和Remi(基于瀏覽器)等GUI框架轉(zhuǎn)化為更簡單的界面2.任務(wù)準(zhǔn)備開發(fā)一個WindowsGUI程序只需要簡單的5步創(chuàng)建一個WindowsGUI程序02規(guī)劃并組織項目文件結(jié)構(gòu)FileOrganization1.模塊的導(dǎo)入與搜索—
文件與路徑os模塊:提供了使用操作系統(tǒng)的接口os.path.join():智能拼接一個或多個路徑os.path.dirname():獲取絕對路徑中的目錄名sys模塊:用來處理Python運(yùn)行時(runningtime)配置以及資源,從而可以與當(dāng)前程序之外的系統(tǒng)環(huán)境/Python解釋器(interpreter)進(jìn)行交互sys.path屬性是一個由字符串組成的列表,用于指定模塊的搜索路徑1.模塊的導(dǎo)入與搜索—
導(dǎo)入模塊模塊:Python把各種定義存入一個.py的Python源代碼文件中,這個文件就是模塊(module)模塊的導(dǎo)入方式import<module_name>:直接把模塊里的對象導(dǎo)入到另一個模塊里,就像在本地使用一樣。from<module_name>import*:導(dǎo)入模塊內(nèi)定義的所有對象/除了以下劃線“_”開頭的所謂私有對象。一般情況下,不建議從模塊或包內(nèi)導(dǎo)入*,因為可能會覆蓋已經(jīng)定義的同名對象。from<module_name>import<sub_module>as<alias>:模塊名后使用as時,直接把a(bǔ)s后的名稱與導(dǎo)入模塊綁定,也就是為導(dǎo)入的模塊起了一個別名,以簡化代碼的編寫。1.模塊的導(dǎo)入與搜索—
認(rèn)識__name__#settings.py__name__=='__main__'通過“__name__”的值是否為“__main__”來判斷是本模塊代碼文件被執(zhí)行,還是被作為模塊導(dǎo)入到別的程序中執(zhí)行。2.創(chuàng)建模塊和項目文件目錄包(package)__init__模塊(module)變量語句函數(shù)(function)變量/數(shù)據(jù)結(jié)構(gòu)(variable)語句/算法(statements)程序=數(shù)據(jù)結(jié)構(gòu)+算法再談模塊和包的導(dǎo)入Python中使用包(package)來對模塊進(jìn)行進(jìn)一步的封裝種用“點(diǎn)式模塊名”構(gòu)造,例如:模塊名A.B表示包A中名為B的子模塊Python只把含有__init__.py文件的目錄當(dāng)成包,哪怕是一個空文件2.創(chuàng)建模塊和項目文件目錄GUI工具的項目結(jié)構(gòu)output:目錄,批量創(chuàng)建的文件夾將存放到該目錄下data:目錄,存放了排考數(shù)據(jù)Excel文件utils:包,包含了一個__init__.py包初始化文件,以及多個功能模塊.py文件__init__.py:空文件,初始化包setting.py:定義工作主目錄、指定文件路徑、定義GUI菜單項等全局變量gui_kit.py:創(chuàng)建GUI主窗口的代碼generator.py:生成器,生成器函數(shù)實(shí)現(xiàn)文件的計數(shù)enclosing.py:閉包,閉包函數(shù)實(shí)現(xiàn)文件的計數(shù)decorator.py:裝飾器,在批量創(chuàng)建文件夾時增加進(jìn)度條效果2.創(chuàng)建模塊和項目文件目錄創(chuàng)建GUI界面:gui_kit.py模塊創(chuàng)建Windows界面元素,主要包括:菜單欄&菜單文本標(biāo)簽文本框按鈕下拉框3.創(chuàng)建文件目錄操作函數(shù)make_directory.pysheet_names()函數(shù):從Excel文件中獲取所有的工作表Sheets的名稱,返回一個名稱列表;exam_schedules()函數(shù):從指定的Sheet數(shù)據(jù)表中提取指定列的數(shù)據(jù),拼接成父、子兩級目錄;create_folder()函數(shù):在指定的目錄下批量創(chuàng)建文件夾。3.創(chuàng)建文件目錄操作函數(shù)make_directory.pysheet_names()函數(shù):從Excel文件中獲取所有的工作表Sheets的名稱,返回一個名稱列表;exam_schedules()函數(shù):從指定的Sheet數(shù)據(jù)表中提取指定列的數(shù)據(jù),拼接成父、子兩級目錄;create_folder()函數(shù):在指定的目錄下批量創(chuàng)建文件夾。3.創(chuàng)建文件目錄操作函數(shù)make_directory.pysheet_names()函數(shù):從Excel文件中獲取所有的工作表Sheets的名稱,返回一個名稱列表;exam_schedules()函數(shù):從指定的Sheet數(shù)據(jù)表中提取指定列的數(shù)據(jù),拼接成父、子兩級目錄;create_folder()函數(shù):在指定的目錄下批量創(chuàng)建文件夾。讀取Excel排考文件數(shù)據(jù)03使用高階函數(shù)拼接父子目錄路徑Higher-orderfunction1.了解高階函數(shù)—
小函數(shù)lambda函數(shù)式編程(FunctionalProgramming)就是一種抽象程度很高的編程范式,它的一個特點(diǎn)就是,允許把函數(shù)本身作為參數(shù)傳給另一個函數(shù),還允許返回一個函數(shù)賦值給變量。lambda函數(shù)又稱之為lambda表達(dá)式、單表達(dá)式函數(shù)、匿名函數(shù),她以聲明性方式創(chuàng)建函數(shù)定義。lambda函數(shù)可以包含任意多的參數(shù),但是函數(shù)體部分只能包含一個表達(dá)式。1.了解高階函數(shù)—
函數(shù)作為變量值Python中的函數(shù)是第一等公民(first-classvalue)也就是說,一旦函數(shù)被定義就會被自動創(chuàng)建成一個對象/分配內(nèi)存,她可以像我們使用的一個普通變量一樣來使用函數(shù)1.了解高階函數(shù)—
函數(shù)作為參數(shù)把一個函數(shù)作為參數(shù)傳遞給另一個函數(shù)實(shí)際上,lambda函數(shù)就是作為參數(shù)傳遞給sorted()函數(shù)的1.了解高階函數(shù)—
函數(shù)作為返回值函數(shù)的返回值也可以是一個函數(shù),可以用于惰性求值。2.三大內(nèi)置高階函數(shù)—
mapmap()函數(shù)根據(jù)提供的函數(shù)對指定序列做映射,它接收一個函數(shù)和一個可迭代對象,將函數(shù)作用于可迭代對象的每一個元素語法:2.三大內(nèi)置高階函數(shù)—
mapmap()函數(shù)拼接map()映射函數(shù)將排考數(shù)據(jù)列表的每一個字典數(shù)據(jù)項傳遞給lambda函數(shù),lambda函數(shù)再將字典中“場次”和“考室”兩個key的value用反斜線拼接作為一個數(shù)據(jù)項。2.三大內(nèi)置高階函數(shù)—
reducereduce()函數(shù)拼接將兩個參數(shù)的函數(shù)累積應(yīng)用于序列的項,從左到右,以便將序列減少到單個值。語法:2.三大內(nèi)置高階函數(shù)—
filterfilter()函數(shù)拼接根據(jù)條件過濾序列,該函數(shù)接收兩個參數(shù),第一個參數(shù)是一個函數(shù),第二個參數(shù)為序列,序列的每個元素作為參數(shù)傳遞給函數(shù)進(jìn)行判,最后將符合條件/返回True的元素放到新列表中。語法:3個內(nèi)置高階函數(shù)的使用map()拼接排考信息04使用生成器迭代器進(jìn)行流水號計數(shù)iteration1.了解迭代與迭代器迭代和迭代器迭代(iteration)是重復(fù)一個過程,以生成結(jié)果序列(可能是無限的)迭代器(iterators)是使程序員能夠遍歷容器(尤其是列表)的對象,各種類型的迭代器通常通過容器的接口提供可迭代對象vs.迭代器__iter__()方法/可迭代接口的對象__next__()方法1.了解迭代與迭代器iter()&next()字符串變量是一個可迭代對象,通過iter()函數(shù)進(jìn)行轉(zhuǎn)換后創(chuàng)建了一個迭代器它通過next()函數(shù)向前、逐一訪問容器中的元素。可迭代對象與迭代器的性能是一樣的,即它們都是惰性求值(lazyevaluation),指將一個表達(dá)式的值計算向后拖延直到這個表達(dá)式真正被使用的時候。1.了解迭代與迭代器兔子繁殖問題迭代其實(shí)就是一種遞推、逼近。斐波那契數(shù)列(FibonacciSequence),又稱黃金分割數(shù)列:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>=2)1.了解迭代與迭代器兔子繁殖問題迭代其實(shí)就是一種遞推、逼近。斐波那契數(shù)列(FibonacciSequence),又稱黃金分割數(shù)列:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>=2)2.使用yield生成器生成流水號生成器(generators)通常是指生成器函數(shù),是一個用于創(chuàng)建迭代器的工具,返回一個generatoriterator的函數(shù)當(dāng)它們要返回數(shù)據(jù)時會使用yield語句,而不是returnyield改變函數(shù)的執(zhí)行流程,得到一個生成器,每次對生成器上調(diào)用next()時,它會從上次離開的位置恢復(fù)執(zhí)行(它會記住上次執(zhí)行語句時的所有數(shù)據(jù)值)2.使用yield生成器生成流水號生成器創(chuàng)建流水號:utils/generator.py3.生成器表達(dá)式某些簡單的生成器可以寫成更簡潔的表達(dá)式代碼,所用語法類似列表推導(dǎo)式,但外層為圓括號而非方括號。05使用閉包及裝飾器實(shí)現(xiàn)進(jìn)度條closure1.變量作用域和嵌套函數(shù)—LEGB原則內(nèi)置(Built-in)全局(Global)閉包(Enclose)局部(Local)變量的作用域序中代碼能夠訪問到變量的可見范圍,也稱之為命名空間(namespace),也即變量的可用性、可見性范圍LEGB原則L(Local)局部作用域E(Enclosing)閉包函數(shù)外的函數(shù)中G(Global)全局作用域B(Built-in)內(nèi)置/Python解釋器作用域,也就是所謂的1.變量作用域和嵌套函數(shù)—LEGB原則Global修改外部變量函數(shù)內(nèi)部讀取函數(shù)外部變量時可以直接讀取,但修改一個的變量時,須使用global關(guān)鍵字明確聲明變量。如果該變量已經(jīng)在函數(shù)外定義,則global修飾后,對該變量的修改會反映到外部變量;如果該變量沒有在函數(shù)外部定義,而在函數(shù)內(nèi)部使用global做了修飾后,會創(chuàng)建一個全局變量。1.變量作用域和嵌套函數(shù)—
嵌套函數(shù)函數(shù)嵌套定義(nestedfunction)Python允許嵌套定義函數(shù),也就是函數(shù)內(nèi)部還可以再定義其它函數(shù),這稱之為函數(shù)嵌套定義。如果要在一個嵌套的函數(shù)中修改嵌套作用域中的變量,則須使用nonlocal關(guān)鍵字。1.變量作用域和嵌套函數(shù)—
遞歸函數(shù)fib(4)fib(3)fib(2)fib(2)fib(1)fib(1)fib(0)fib(1)fib(0)101121013遞歸函數(shù)(r
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 3597-2019增材制造金屬材料機(jī)械性能測試方法指南
- DB31/T 534-2011通信網(wǎng)絡(luò)運(yùn)營環(huán)節(jié)的節(jié)能要求
- DB31/T 1282-2021車用氣瓶氫氣充裝安全技術(shù)條件
- DB31/T 1184-2019特種設(shè)備隱患分類分級導(dǎo)則
- DB31/ 842-2014微電子元件制造業(yè)職業(yè)病危害控制規(guī)范
- DB31/ 731-2020船舶修正總噸單位產(chǎn)品能源消耗限額
- DB31/ 565-2013中小學(xué)課業(yè)簿冊安全衛(wèi)生與質(zhì)量要求
- DB31/ 48-2012啤酒單位產(chǎn)品能源消耗限額
- 金屬制品在工業(yè)中的智能制造資源優(yōu)化策略設(shè)計優(yōu)化考核試卷
- 初三中考前80天動員會上校長發(fā)言只有化緊張為動力變悔恨為拼搏讓刻苦的學(xué)習(xí)把消極的情緒徹底淹沒你才有可能笑對中考
- 施工鋼結(jié)構(gòu)制作安裝環(huán)境因素識別表
- 污水井巡查記錄表
- 2關(guān)于更換現(xiàn)場項目經(jīng)理的函
- 部編版小學(xué)道德與法治四年級下冊期末復(fù)習(xí)簡答及分析題專練(含答案)
- 電子商務(wù)那些事學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫2023年
- 環(huán)境及理化因素?fù)p傷-凍傷
- Unit7SeasonPartALetslearn(教學(xué)設(shè)計)閩教版英語四年級下冊
- 世界文化遺產(chǎn)武當(dāng)山古建筑群的資料
- 醫(yī)院醫(yī)療設(shè)備采購項目HIS系統(tǒng)及硬件采購?fù)稑?biāo)文件
- 【橡膠工藝】-橡膠產(chǎn)品生產(chǎn)工藝規(guī)程
- 推銷實(shí)戰(zhàn)技巧與客戶優(yōu)秀服務(wù)技巧
評論
0/150
提交評論