版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章Python開發(fā)環(huán)境搭建與使用董付國微信公眾號:Python小屋本章學習目標了解Python語言的應用領域了解Python語言的特點熟練使用IDLE開發(fā)環(huán)境熟練安裝Python擴展庫并熟悉安裝過程中的常見問題和解決方法了解標準庫對象和擴展庫對象的導入和使用方法了解Python代碼編寫規(guī)范1.1Python語言特點與應用領域常見應用領域:計算機安全、網絡安全、軟件漏洞挖掘、軟件逆向工程、軟件測試與分析、電子取證、密碼學數據采集、數據分析與處理、數據可視化機器學習、深度學習、自然語言處理、推薦系統(tǒng)構建統(tǒng)計分析、數學建模、科學計算、符號計算計算機圖形學、數字圖像處理、音樂編程、語音采集與識別、視頻采集與處理、動畫設計與制作、游戲設計與策劃套接字編程、網站開發(fā)、網絡爬蟲、網絡運維、系統(tǒng)運維樹莓派、無人機、移動終端應用開發(fā)、電子電路設計輔助教育、輔助設計、辦公自動化1.1Python語言特點與應用領域Python是一門跨平臺、開源、免費的解釋型高級動態(tài)程序設計語言,是一種通用程序設計語言。除了直接解釋執(zhí)行源碼之外,Python還可以把源代碼偽編譯為字節(jié)碼來優(yōu)化程序、提高加載速度并對源代碼進行一定程度的保密,也支持使用py2exe、pyinstaller、cx_Freeze、py2app、Nuitka或其他類似工具將Python程序及其所有依賴庫打包為特定平臺上的可執(zhí)行文件,從而可以脫離Python解釋器環(huán)境和相關依賴庫在其他同類平臺上獨立運行,同時也可以更好地保護源碼和知識產權。1.1Python語言特點與應用領域Python語言優(yōu)勢與特點:以快速解決問題為主要出發(fā)點,不涉及過多計算機底層知識,需要記憶的語言細節(jié)少,可以快速入門。支持命令式編程、函數式編程,支持面向對象程序設計,其中函數式編程模式可以讓代碼更優(yōu)雅,也能夠更好地利用CPU等硬件資源。語法簡潔清晰,代碼布局優(yōu)雅,可讀性和可維護性強。在編寫Python程序時,強制要求的縮進使得代碼排版非常漂亮并且方便人類閱讀,建議適當添加的空行和空格使得代碼不至于過度密集,大幅度提高了代碼可讀性和可維護性。內置數據類型、內置模塊和標準庫提供了大量功能強大的操作,易學易用。很多在其他編程語言中需要十幾行甚至幾十行代碼才能實現的功能在Python中被封裝為一個函數,直接調用即可,降低了非計算機專業(yè)人士學習和使用Python的門檻。擁有大量的幾乎支持所有領域應用開發(fā)的成熟擴展庫和狂熱支持者。1.2Python安裝與IDLE簡單使用1.2Python安裝與IDLE簡單使用1.3在PowerShell或命令提示符環(huán)境運行Python程序#內置函數input()用于接收用戶的鍵盤輸入name=input('輸入你的名字:')#字符串前面加字母f表示對其中大括號里的內容進行替換和格式化,見6.1.3節(jié)print(f'{name}你好,歡迎加入Python的奇妙世界!')1.4.1包、庫、模塊的概念模塊指一個包含若干函數定義、類定義或常量的Python源程序文件,庫或包指包含若干模塊并且其中一個文件名為__init__.py的文件夾。對于包含完整功能代碼的單個模塊,叫作庫也可以,例如標準庫re和re模塊這兩種說法都可以。但一般不把庫叫作模塊,例如tkinter庫包含若干模塊文件,此時一般說標準庫tkinter而不說tkinter模塊。在Python中,有內置模塊、標準庫和擴展庫之分。內置模塊和標準庫是Python官方的標準安裝包自帶的,內置模塊沒有對應的文件,可以認為是封裝在Python解釋器主程序中的;標準庫有對應的Python程序文件,這些文件在Python安裝路徑中的Lib文件夾中。1.4.1包、庫、模塊的概念1.4.1包、庫、模塊的概念常用標準庫:math(數學模塊)、random(隨機模塊)、datetime(日期時間模塊)、time(時間操作有關的模塊)、collections(包含更多擴展版本序列的模塊)、operator(常用運算符模塊)、functools(與函數以及函數式編程有關的模塊)、itertools(與迭代有關的模塊)、urllib(與網頁內容讀取以及網頁地址解析有關的庫)、string(字符串模塊)、re(正則表達式模塊)、os(系統(tǒng)編程模塊)、os.path(與文件、文件夾有關的模塊)、shutil(高級文件操作)、zlib(數據壓縮模塊)、hashlib(安全哈希與報文摘要模塊)、socket(套接字編程模塊)、tkinter(GUI編程庫)、sqlite3(操作SQLite數據庫的模塊)、csv(讀寫CSV文件的模塊)、json(讀寫JSON文件的模塊)、pickle(數據序列化與反序列化的模塊)、statistics(統(tǒng)計模塊)、threading(多線程編程模塊)、multiprocessing(多進程編程模塊)、wave(讀寫wav文件)1.4.1包、庫、模塊的概念常用擴展庫:jieba(用于中文分詞)、moviepy(用于編輯視頻文件)、xlrd(用于讀取Excel2003及之前版本文件)、xlwt(用于寫入Excel2003及之前版本文件)、openpyxl(用于讀寫Excel2007及更高版本文件)、python-docx(用于讀寫Word2007及更新版本文件)、python-pptx(用于讀寫PowerPoint2007及更新版本文件)、pymupdf(用于操作PDF文件)、pymssql(用于操作MicrosoftSQLServer數據庫)、pypinyin(用于處理中文拼音)、Pillow(用于數字圖像處理)、PyOpenGL(用于計算機圖形學編程)、NumPy(用于數組計算與矩陣計算)、Scipy(用于科學計算)、Pandas(用于數據分析與處理)、Matplotlib(用于數據可視化或科學計算可視化)、requests(用于實現網絡爬蟲功能)、beautifulsoup4(用于解析網頁源代碼)、Scrapy(爬蟲框架)、Selenium(自動化測試)、sklearn(用于機器學習)、PyTorch、tensorflow(用于深度學習)、Flask、Django(用于網站開發(fā))、PyOpenCV(用于計算機視覺)。1.4.2安裝擴展庫擴展庫安裝成功之后相應的文件會存放于Python安裝路徑的Lib\site-packages文件夾中。1.4.2安裝擴展庫常用pip子命令pip命令示例說明pipfreeze[>requirements.txt]列出已安裝模塊及其版本號,可以把這些信息直接寫入文本文件requirements.txtpipinstallSomePackage[==version]在線安裝SomePackage模塊,可以指定擴展庫版本,如果不指定則默認安裝最新版本pipinstallSomePackage.whl通過whl文件離線安裝擴展庫pipinstall--upgradeSomePackage升級SomePackage模塊到最新版本pipinstall-rrequirements.txt根據文件requirements.txt中的擴展庫名稱和版本信息進行批量安裝pipuninstallSomePackage卸載SomePackage模塊1.4.2安裝擴展庫(1)在線安裝失敗在線安裝失敗最大的可能有三個:1)網絡不好導致下載失敗,2)需要本地安裝有正確版本的VC++編譯環(huán)境,3)擴展庫暫時還不支持自己使用的Python版本。對于第一種錯誤,可以多嘗試幾次、指定國內源或下載whl文件離線安裝。對于第二種錯誤,可以在本地安裝合適版本的VC++編譯器或者下載whl文件離線安裝。對于第三種錯誤,可以嘗試找一下有沒有第三方編譯好的whl文件可以下載然后離線安裝。在Windows平臺上,可以從/~gohlke/pythonlibs/下載第三方編譯好的.whl格式擴展庫安裝文件。1.4.2安裝擴展庫然后在命令提示符或PowerShell環(huán)境中使用pip命令進行離線安裝,指定文件的完整路徑和擴展名,例如:pipinstallpandas-1.4.3-cp310-cp310-win_amd64.whl在PowerShell環(huán)境中,如果要執(zhí)行當前目錄下的程序,需要在前面加一個圓點和一個斜線,例如在Python安裝路徑中Scripts文件夾中執(zhí)行上面的命令需要改成下面的格式:./pipinstallpandas-1.4.3-cp310-cp310-win_amd64.whl如果由于網速問題導致在線安裝速度過慢的話,pip命令支持指定國內的站點來提高速度,下面的命令用來從阿里云服務器下載安裝擴展庫jieba,其他服務器地址可以自行查閱。pipinstalljieba-i/pypi/simple--trusted-host1.4.2安裝擴展庫如果固定使用阿里云服務器鏡像,可以在當前登錄用戶的AppData\Roaming文件夾中創(chuàng)建文件夾pip,在pip文件夾中創(chuàng)建文件pip.ini,輸入下面的內容,以后再執(zhí)行pip命令安裝和升級擴展庫時就不用每次都指定服務器地址了。[global]index-url=/pypi/simple[install]trusted-host=1.4.2安裝擴展庫如果遇到類似于“拒絕訪問”的出錯提示,可以使用管理員權限啟動命令提示符,或者在執(zhí)行pip命令時在最后增加選項“--user”。如果需要指定安裝位置,可以參考下面的命令進行修改。pipinstall--target=c:\python38\lib\site-packagesgif1.4.2安裝擴展庫(2)安裝路徑帶來的問題如果計算機上安裝了多個版本的Python開發(fā)環(huán)境,在一個版本下安裝的擴展庫無法在另一個版本中使用,同一個擴展庫需要在不同版本的Python環(huán)境中分別進行安裝。為了避免因為路徑問題帶來困擾,強烈建議在命令提示符或PowerShell環(huán)境切換至相應版本Python安裝目錄的scripts文件夾中,然后執(zhí)行pip命令,如果要離線安裝擴展庫的話,最好也把.whl文件下載到相應版本的scripts文件夾中。簡單地說,想在哪個版本的Python中使用擴展庫,就到哪個版本的Python安裝路徑中的Scripts子文件夾中安裝擴展庫,這樣可以最大程度地減少錯誤。1.4.2安裝擴展庫(3)擴展庫版本帶來的問題編寫Python程序時,尤其是使用了擴展庫的程序,還可能會遇到的一種情況是,升級擴展庫以后原來的程序無法運行了,提示某些屬性或方法不存在。這是因為新版本擴展庫不再支持原來的用法,這時需要查一下這個擴展庫官方網站的版本更新歷史,找到最新的用法然后修改自己的代碼。如果確實需要使用舊版本的話,可以執(zhí)行pip命令時明確指定擴展庫版本號,例如,pipinstallmoviepy==1.0.31.4.2安裝擴展庫(4)快速搭建同樣的開發(fā)環(huán)境在測試使用了擴展庫的Python程序時,應確保測試環(huán)境和開發(fā)環(huán)境安裝的擴展庫版本完全一致,否則無法給出準確可靠的測試結果。一般來說,大型程序會用到很多擴展庫,如果在測試環(huán)境中逐個安裝的話比較花費時間,這時可以在開發(fā)環(huán)境中使用下面的命令得到所有擴展庫名稱和版本信息,pipfreeze>requirements.txt然后把得到的文件requirements.txt復制到測試環(huán)境中,執(zhí)行下面的命令批量安裝擴展庫,pipinstall-rrequirements.txt1.5標準庫、擴展庫對象的導入與使用Python所有內置對象不需要做任何的導入操作就可以直接使用,內置模塊對象和標準庫對象必須先導入才能使用,擴展庫則需要正確安裝之后才能導入和使用其中的對象。在編寫代碼時,一般建議先導入內置模塊和標準庫對象再導入擴展庫對象,最后導入自己編寫的自定義模塊。建議每個import語句只導入一個模塊或一個模塊中的對象。1.5.1import模塊名[as別名]importreimportrandomimportos.pathaspath#查找字符串中所有數字子串print(re.findall('\d+','Python123456小屋654'))#隨機選擇20個字符0或1并連接為長字符串print(''.join(random.choices('01',k=20)))#測試指定的路徑是否為文件print(path.isfile(r'E:\python310\python.exe'))運行結果為:['123456','654']11010010111110101111True1.5.2from模塊名/包名import對象名/模塊名[as別名]fromos.pathimportjoinfromrandomimportsamplefromnumpyimportarrayfromPILimportImageGrab#在區(qū)間[0,10)中隨機選擇6個不重復的數字,返回列表print(sample(range(10),6))#連接文件夾與文件路徑print(join(r'C:\python310','python.exe'))#把Python列表轉換為Numpy數組print(array([1,2,3,4]))#屏幕截圖,然后輸出圖像寬度和高度print(ImageGrab.grab().size)運行結果為:[7,4,1,0,6,2]C:\python310\python.exe[1234](1920,1080)1.5.3from模塊名import*fromitertoolsimport*#從字符串'01234'中任選3個字符的所有組合,不允許重復#list()用來把函數combinations()的返回值變成列表,方便查看,下同print(list(combinations('01234',3)))#從字符串'01234'中任選3個字符的所有組合,允許重復print(list(combinations_with_replacement('01234',3)))#從字符串'1234'中任選3個字符的所有排列print(list(permutations('1234',3)))#把多個列表首尾相接print(list(chain([1,2,3],[4,5,6],[7,8,9])))1.5.3from模塊名import*data=[1,2,3,4,5,6]values=[0,1,1,0,0,1]#把等長列表data和values左對齊#返回data中與values中的1對應的位置上的元素print(list(compress(data,values)))#返回列表中作為參數傳遞給函數callable()后得到False的那些元素print(list(filterfalse(callable,[int,3,str,sum,'5'])))#返回'12'和'45'的笛卡爾積print(list(product('12','45')))#返回3個字符串'12'的笛卡爾積print(list(product('12',repeat=3)))#把'123'和'abcdef'左對齊,對應位置上的字符組合到一起,短的在后面補字符0#相當于把'123000'和'abcdef'左對齊,對應位置上的字符組合到一起print(list(zip_longest('123','abcdef',fillvalue='0')))1.5.3from模塊名import*#創(chuàng)建cycle對象,根據給定的數據創(chuàng)建一個無限循環(huán)的圈c=cycle('Python小屋')#獲取并輸出cycle對象中的前10個元素for_inrange(10):print(next(c))#查找第一個數字為17且公差為6的等差數列中第一個大于50的數字foriincount(17,6):ifi>50:print(i)break1.6Python代碼編寫規(guī)范(1)縮進在選擇結構、循環(huán)結構、異常處理結構、with語句和函數定義、類定義等結構中,對應的函數體或語句塊都必須有相應的縮進。當某一行代碼與上一行代碼不在同樣的縮進層次上并且與之前某行代碼的縮進層次相同時,表示上一個代碼塊結束。Python對代碼縮進是硬性要求,嚴格使用縮進來體現代碼的邏輯從屬關系,錯誤的縮進將會導致代碼無法運行(語法錯誤)或者可以運行但是得到錯誤結果(邏輯錯誤)。一般以4個空格為一個縮進單位,并且相同級別的代碼塊應具有相同的縮進量。在編寫程序時要注意,代碼縮進時要么使用空格,要么使用Tab鍵,不能二者混合使用。1.6Python代碼編寫規(guī)范(2)空格與空行作為一般建議,最好在每個類和函數的定義或一段完整的功能代碼之后增加一個空行,在運算符兩側各增加一個空格,逗號后面增加一個空格,讓代碼適當松散一點,不要過于密集。在實際編寫代碼時,這個規(guī)范需要靈活運用。有些地方增加空行和空格會提高可讀性,代碼更加利于閱讀。但是如果生硬地在所有運算符兩側都增加空格,代碼布局過于松散了反而適得其反,應該張弛有度。如果同一個表達式中有明顯不同優(yōu)先級的運算符,高優(yōu)先級運算符兩側可以不加空格;另外,在下標運算符、成員訪問運算符以及函數定義和調用的圓括號兩側都不加空格。1.6Python代碼編寫規(guī)范(3)標識符命名變量名、常量名、函數名和類名、數據成員名、成員方法名統(tǒng)稱為標識符,其中變量用來表示初始結果、中間結果和最終結果的值及其支持的操作,函數用來表示一段封裝了某種功能的代碼,類是具有相似特征和共同行為的對象的抽象。在為標識符起名字時,至少應該做到“見名知義”,并優(yōu)先考慮使用英文單詞或單詞的組合作為標識符名字。1.6Python代碼編寫規(guī)范如果使用單詞組合的話有兩種常用形式,一種是使用單下畫線連接單詞(例如str_name),一種是標識符名字首字母小寫而后面幾個單詞的首字母大寫(例如strName),變量名和函數名可以使用任意一種形式,類名一般使用第二種形式并且首字母大寫。例如,使用age表示年齡、number表示數量、radius表示圓或球的半徑、price表示價格、area表示面積、volume表示體積、row表示行、column表示列、length表示長度、width表示寬度、line表示直線、curve表示曲線,getArea或get_area表示用來計算面積的函數名,setRadius或set_radius表示修改半徑的函數,這也是保證與提高代碼可讀性和可維護性的基本要求。除非是用來臨時演示或測試個別知識點的代碼片段,否則不建議使用x、y、z或者a1、a2、a3這樣的變量名。1.6Python代碼編寫規(guī)范除“見名知義”這個基本要求之外,在Python中定義標識符時,還應該遵守下面的規(guī)范。必須以英文字母、漢字或下劃線開頭,中間位置可以包含漢字、英文字母、數字和下畫線。不能包含空格或任何中英文標點符號。不能使用關鍵字,例如import、from、if、else、for、while、break、continue、and、or、not、lambda、def、yield、return、class、try、except、finally、raise、with等都是不能用作標識符名稱的??梢詫肽Kkeyword之后通過keyword.kwlist查看所有關鍵字。對英文字母的大小寫敏感,例如age和Age是不同的標識符名稱。不建議使用系統(tǒng)內置的模塊名、類型名或函數名以及已導入的模塊名及其成員名作變量名或者自定義函數名、類名,例如type、max、min、len、list這樣的變量名都是不建議使用的,也不建議使用math、random、datetime、re或其他內置模塊和標準庫的名字。1.6Python代碼編寫規(guī)范(4)續(xù)行為提高程序的可讀性,不要寫過長的語句,應盡量保證一行代碼不超過屏幕寬度。如果語句確實太長超過屏幕寬度,最好拆分成多行并在前面若干行的行尾使用續(xù)行符“\”表示下一行代碼仍屬于本條語句,或者使用圓括號把多行代碼括起來表示是一條語句,但不管哪種方式都不能在標識符、數字和字符串中間位置換行。使用反斜線續(xù)行符時要注意,反斜線后面不能再有代碼有效字符,可以有注釋。另外,在包含若干元素的列表、元組、字典、集合中可以在任意元素后面逗號位置進行換行。1.6Python代碼編寫規(guī)范expression1=1+2+3\#使用反斜線作為續(xù)行符+4+5expression2=(1+2+3#把多行表達式放在圓括號中表示是一條語句+4+5)(clips_array([[video]*3,[video]*3],bg_color=(0.6,)*3).write_videofile('6個視頻同時播放.avi',co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專用燒烤制品買賣協議(2024版)版B版
- 專屬2024年度玉米購入協議格式版A版
- 2025年度產業(yè)園區(qū)廠房租賃合同規(guī)范文本8篇
- 2025年度高科技產業(yè)園區(qū)物業(yè)智能化改造服務協議4篇
- 專業(yè)維修與裝飾工程2024協議格式版B版
- 2025年度企業(yè)搬遷拆遷補償承包合同范本4篇
- 個人間借貸協議規(guī)范文本2024年款版A版
- 2025年度影視基地場地租賃及拍攝服務合同4篇
- 2025年度教育機構場地租賃與教育培訓合同2篇
- 二零二四年LED產品OEM生產與技術支持合同
- 冬春季呼吸道傳染病防控
- 中介費合同范本(2025年)
- 《kdigo專家共識:補體系統(tǒng)在腎臟疾病的作用》解讀
- 生產調度員崗位面試題及答案(經典版)
- 【物 理】2024-2025學年八年級上冊物理寒假作業(yè)人教版
- 交通運輸安全生產管理規(guī)范
- 2025春夏運動戶外行業(yè)趨勢白皮書
- 電力行業(yè) 電力施工組織設計(施工方案)
- 《法制宣傳之盜竊罪》課件
- 通信工程單位勞動合同
- 查對制度 課件
評論
0/150
提交評論