【華為人】——創新,需要一點點超前
720
2025-04-03
這本書是你積累Python編程經驗一個很好的起點,但某些時候你可能需要使用其他更多的資源。本章為你列出了十大令人驚嘆的編程資源,你可以使用它們來積累更多的開發經驗。創建Python應用程序時,使用這些資源可以幫助我們大大地節省時間和精力,并且讓我們創建出更棒的程序。
當然,本章只介紹一部分Python資源。網絡上有大量的Python文檔,以及數不清的Python代碼。就拿Python庫來說,其數量也多得驚人,要全面介紹它們,你得寫整整一本書(或許兩本)才行。本章的主要目的還是為了啟發大家的思維,讓大家知道去哪里查找自己需要的資料。搜索資料時,請不要局限于本章介紹的內容,而要以它們為起點,奔向更廣闊的領域。
1 使用Python在線文檔
使用Python的一個主要部分是了解這種語言中有哪些內容可用以及如何擴展它來做其他任務。在線Python文檔(寫作本書時的版本為3.6.x,當你讀到這里時文檔版本很可能已經更新了)提供了更多有關Python的參考資料,包括如下主題:
當前Python版本添加的新特征;
完整教程;
完整庫參考;
完整語言參考;
如何安裝和配置Python;
如何使用Python執行特定任務;
從其他源安裝Python模塊(作為Python擴展的手段);
發布自己創建的Python模塊,供其他人使用;
如何使用C/C++擴展Python,以及嵌入你創建的新特征;
面向C/C++開發者(想使用Python擴展他們的應用程序)的完整參考;
FAQ頁面。
上面所有信息都是以易于訪問和使用的形式提供的。查找信息時,除了使用常見的內容目錄之外,你還可以使用索引進行查找。例如,如果你只對特定的模塊、類或方法感興趣,那么你可以使用全局模塊索引(Global Module Index)查找。
此外,你也可以把自己使用Python時遇到的問題在官網中進行提交。雖然解決與產品相關的問題很重要,但是和其他語言一樣,Python中也會存在bug。找出和修正這些bug會讓Python變得更好。
在線文檔使用起來很靈活。在文檔頁面的左上角有兩個下拉列表框:第一個是語言下拉列表框,從中你可以選擇自己喜歡的語言(寫作本書時,只有英語、法語和日語3種語言可供選擇);第二個是Python版本選擇下拉列表框,里面提供了一些Python早期版本,包括Python 2.7。
2 使用LearnPython.org教程
網上Python學習教程有很多,大都做得很不錯,但相比于LearnPython網站上的教程,它們都有一個不足,那就是缺少交互性。在LearnPython網站上學習Python時,你不只是在閱讀有關Python的知識,還可以使用網站提供的交互環境親自動手試一試。
到這里,本書中的簡單教程你可能都學過了。但LearnPython網站上的一些高級教程你可能還沒學過。這些教程主要講解以下主題。
生成器:
返回迭代器的特殊函數。 -?列表生成式:
一種基于現有列表生成新列表的方法。 -?可變函數參數:
對第15章“使用帶有可變參數列表的方法”內容的補充。 -?正則表達式:
用于匹配字符模式的通配符設置,比如電話號碼。 -?異常處理:
對第10章內容的擴展。 -?集合:
這是一種特殊的列表,里面不包含重復元素。 -?序列化:
講解如何使用JSON這種數據存儲技術。 -?偏函數:
用于創建派生于較復雜函數的簡單函數的專門化版本。比如,你有一個帶有兩個參數的multiply()函數,那么名為double()的偏函數可能只需要一個參數,這個參數總是要乘以2。 -?代碼審查:
提供檢查類、函數、關鍵字的能力,用于判斷用途和功能。 -?裝飾器:
一種對可調用對象進行簡單修改的方法。
3 使用Python做Web編程
本書探討了基本編程的來龍去脈,其中涉及的都是很簡單的桌面應用程序。有許多開發人員專門使用Python創建各種各樣的在線應用程序。Python Web編程網站可以幫助你從桌面程序開發轉向在線應用程序開發。它并非只講解一種在線應用程序,而是涵蓋了幾乎所有應用程序(免費提供整本書)。教程分為如下3個主要部分(和許多次要部分)。
服務器
開發應用程序服務器端框架
創建CGI腳本
提供服務器應用程序
開發內容管理系統(CMS)
通過Web服務方案設計數據訪問方法
客戶端
使用瀏覽器和基于瀏覽器的技術
創建基于瀏覽器的客戶端
通過各種技術(包括Web服務)訪問數據
相關
為基于Python的在線計算創建通用方案
使用數據庫管理系統(DBMS)
設計應用程序模板
構建內部網解決方案
4 獲取更多庫
或許你會認為Pythonware這個站點平淡無奇,但當你進入這個網站后,你就會被它深深吸引。這個網站提供了大量第三方庫,借助這些庫,你可以使用Python做更多的工作。
網站里面有大量鏈接,為我們提供了很多有用的資源。其中,通過“Downloads”這個鏈接你可以訪問如下庫。
aggdraw
:
這個庫幫助你繪制平滑的線條。 -?celementtree
:
這個庫是elementtree庫的擴展庫,可以讓你更快、更高效地使用XML數據。 -?console
:
這是一個窗口界面,幫助我們創建出更好的控制臺程序。 -?effbot
:
包含了許多有用的附加組件和實用程序,包括ENews RSS新聞閱讀器。 -?elementsoap
:
這個庫可以幫助我們創建到Web服務提供者的SOAP(簡單對象訪問協議)連接。 -?elementtidy
:
這是對elementtree庫的擴展,可以幫助我們創建出更好看、功能更強大的XML樹。 -?elementtree
:
這個庫可以幫助我們更高效地使用XML數據。 -?exemaker
:
這是一個從Python腳本創建可執行程序的實用程序,借助它,你可以在機器上像運行其他應用程序一樣運行腳本。 -?ftpparse
:
這個庫用來使用FTP站點。 -?grabscreen
:
這個庫用來截屏。 -?imaging
:
向Python圖像處理庫(PIL)提供源代碼分發,該庫允許你向Python解釋器添加圖像處理功能。通過它,你可以定制PIL來滿足自己特定的需求。 -?pil
:
PIL的二進制安裝程序,它可以讓PIL庫更容易地安裝到你的系統中。(還有其他基于PIL的庫,比如pilfont庫,這個庫用于向基于PIL的應用程序添加字體增強功能)。 -?pythondoc
:
這個實用程序用來從Python代碼中的注釋創建文檔,其工作原理與JavaDoc類似。 -?squeeze
:
這個實用程序用于將包含在多個文件中的Python程序轉換為單文件或雙文件的發行版,并能夠在Python解釋器中正常執行。 -?tkinter3000
:
這個庫是Python的標準GUI部件庫,包含許多子產品。這些部件本質上是一些代碼,用于創建GUI應用程序中的控件,如按鈕。tkinter3000庫有許多附加組件,例如wckgraph,它幫助你向應用程序添加圖形支持。
5 使用IDE快速創建應用程序
交互式開發環境(IDE)幫助你使用特定語言創建應用程序。Python本身自帶了一個集成開發環境——IDLE,適合用來做代碼實驗,但用過一段時間之后你就會發現它有不少局限性,例如,IDLE并不提供許多開發人員喜歡的高級調試功能。另外,當你要創建圖形應用程序時,IDLE很難幫你做到這一點。
由于IDLE本身存在諸多的局限性,所以本書才決定采用Jupyter Notebook來代替IDLE(本書第一版采用的是IDLE)。不過,在某些情況下,你還是會發現Jupyter Notebook并不能滿足你的需求。如果你問50個開發人員哪些工具(尤其是問IDE時)是最好用的萬金油,他們的回答大都不一樣,幾乎很難達成共識。每個開發人員都有自己喜歡的工具,也都不太愿意去嘗試其他工具。通常,開發人員會花很多時間來學習某款IDE工具,并通過擴展它以滿足自己特定的需求(當然,這要求IDE本身支持擴展)。
在選定某個IDE之前要多嘗試幾種不同的IDE,這點很重要,因為一旦你選定了某種IDE,以后就很難再做出改變了。(一旦你選中某個IDE之后,就不想再換成其他IDE了,其中最常見的原因是項目類型不兼容,每次換IDE時,你都必須重新創建項目,此外還有許多其他原因,你可以在網上找到)。PythonEditors維基主頁列出了許多IDE,你可以嘗試一下它們。并且表格中為你提供了每個IDE的詳細信息,你可以根據這些信息和自己的需求立即排除某些IDE。
6 更容易地檢查語法
IDLE提供了某種程度的語法高亮顯示功能,這有助于我們查找代碼中的錯誤。比如,如果你輸入錯誤的關鍵字,IDLE就不會將其顏色更改為系統中定義好的關鍵字顏色。這樣,你就可以立即知道錯誤出在哪里,以及如何修改它,而不必等到應用程序運行后才發現錯誤(有時需要經過幾個小時的調試才能找到錯誤)。
Jupyter Notebook也提供了語法高亮顯示功能,還有一些標準IDE所不具備的高級錯誤檢查功能。不過,對于某些開發人員來說,它本身可能也有一些不足,比如你必須實際運行單元格才能看到錯誤信息。有些開發人員更喜歡交互式語法檢查方式,在這種檢查方式中,IDE會立即標記出代碼中的錯誤,甚至在開發人員離開錯誤代碼行之前,其中錯誤就已經被標識出來了。
python.vim實用程序提供了增強型的語法突出顯示功能,使得在Python腳本中查找錯誤更加容易。這個實用程序以腳本形式運行,這使得它可以在任何平臺上都能快速、高效地使用。此外,你還可以根據需要調整其源代碼以滿足特定的需求。
7 使用XML
現在大多數應用程序都使用可擴展標記語言(XML)來進行各種類型的數據存儲工作。你的系統中可能就有很多XML文件,但你可能認不出它們,因為XML數據存在于許多文件擴展名之下。比如,許多用來保存應用程序設置的.config文件使用的就是XML。簡而言之,現在的問題不是編寫Python應用程序的過程中你會不會遇到XML,而是你什么時候會遇到它。
與其他存儲數據的方法相比,XML有許多優點,比如,XML是獨立于平臺的。你可以在任何系統上使用XML,只要系統認識這種文件格式,同一個文件在不同系統上就都是可讀的。由于XML是獨立于平臺的,所以你可以在許多其他技術(比如Web服務)中看到XML的身影。此外,XML學起來相對容易,而且還是文本的,所以你可以大量使用它,而不用擔心會引起太多問題。
學習XML本身是很重要的,你可以在類似W3Schools的教學網站上查找相關教程來學習。有些開發人員在沒有掌握XML文件相關知識的情形下就急于著手做各種工作,后來他們發現有些Python資料看不懂,因為這些資料往往會假設讀者知道如何編寫基本的XML文件。W3Schools這個網站很不錯,它把整個學習過程分成若干章節,這樣每次你就可以使用一些XML,如下:
XML基礎教程;
驗證你的XML文件;
XML和JavaScript(JavaScript看上去不重要,但在許多在線應用場景中,JavaScript應用廣泛)配合使用;
了解與XML相關的技術;
使用XML高級技術;
使用XML示例使XML更易用。
{利用W3Schools學習計算機技術!!}
在線學習計算機技術最常用的網站是W3Schools,你可以在其官網中找到要學習的內容。在這個網站中,你可以找到創建各種應用程序所需要的Web技術。所涉及的主題包括:
HTML;
CSS;
JavaScript;
SQL;
JQuery;
PHP;
XML;
ASP.NET。
但是,你應該知道,這對Python開發人員來說只是一個起點。先利用W3Schools中的學習資料來切實掌握底層技術,然后通過Python專門資料來提升你的技能。大多數Python開發人員都需要綜合各種學習資料來提升自己的技能,從而在編寫應用程序的過程中展現出與眾不同的一面。
掌握了有關XML的基礎知識之后,你需要學習如何在Python中使用XML。網上有各種技術專題,你可以在各個網站中找到關于使用Python處理XML的教程。通過學習這些教程,你可以快速了解有關XML的知識,并讓你能夠快速創建出使用XML的Python應用程序。
8 克服常見的Python新手錯誤
毫無疑問,每個人編寫代碼時都會犯錯誤,即便那些有著30多年編程經驗的老程序員(他們大概從幼兒園就開始學習編程了)也不例外。每個人都會犯錯,但沒人喜歡犯錯,有些人犯了錯還不愿意承認,其實沒這必要,犯了錯時,不要太沮喪,只要把錯誤改正過來,你的生活就可以繼續下去。
當然,犯錯誤和犯可以避免的常見錯誤是有區別的。不錯,即使是專業人士有時也會犯一些本可以避免的常見錯誤,但這種可能性要小很多,因為他們過去已經經歷過這種錯誤,并訓練自己去避免它。你可以通過避免新手錯誤來獲得競爭優勢。
對于剛開始學習Python的人來說,還有許多其他資料可用,但是相比之下,上面這些資料內容簡潔且容易理解。你可以在較短的時間內讀完它們,做一些筆記以備用,并避免那些讓每個人都會記住的尷尬錯誤。
9 了解Unicode
盡管本書試圖回避Unicode這個棘手的話題,但是當你開始編寫正規應用程序時,你最終還是會碰到它。不過,遺憾的是,Unicode是由一個委員會來決定的,所以最終就有了不止一個定義和標準。簡而言之,Unicode沒有一個統一的定義。
當你開始使用更高級的Python應用程序時,你會遇到大量的Unicode標準,特別是當你的程序要在多種語言(每種語言似乎都有自己的Unicode)下運行時。請記住,我們需要了解Unicode是什么,下面提供給你一些學習主題:
Unicode和字符集;
Python中的Unicode更新;
Python編碼和Unicode;
Unicode概述,參見Unicode官網。
##10 加快Python程序的運行速度
就應用程序來說,沒有什么比性能差更能嚇跑用戶的了。當應用程序性能很差時,用戶根本就不愿意使用它。事實上,糟糕的性能是造成應用程序在企業環境中失敗的一個重要原因。即便有組織愿意花費大量金錢去創建一個萬能的應用程序,但是如果這個程序的運行速度太慢,或者有嚴重的性能問題,也不會有人愿意使用它。
網上有很多資源可以幫助你理解Python應用程序的性能,希望讀者可以廣泛學習。
Python入門書推薦
1、“笨辦法”學Python 3
2、Python編程從入門到精通
3、Python編程無師自通——專業程序員的養成
4、Python程序設計(第3版)
5、Python 3破冰人工智能:從入門到實戰
6、Python編程快速上手——讓繁瑣工作自動化
本文轉載自異步社區。
軟件開發 編程語言
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。