學(xué)習(xí)Python編程的十大資源,新知識,新總結(jié)?。。?qiáng)烈推薦

{【驚喜內(nèi)容見文末】}
本章只介紹一部分Python資源。網(wǎng)絡(luò)上有大量的Python文檔,以及數(shù)不清的Python代碼。就拿Python庫來說,其數(shù)量也多得驚人,要全面介紹它們,你得寫整整一本書(或許兩本)才行。本章的主要目的還是為了啟發(fā)大家的思維,讓大家知道去哪里查找自己需要的資料。搜索資料時,請不要局限于本章介紹的內(nèi)容,而要以它們?yōu)槠瘘c,奔向更廣闊的領(lǐng)域。
1 使用Python在線文檔
使用Python的一個主要部分是了解這種語言中有哪些內(nèi)容可用以及如何擴(kuò)展它來做其他任務(wù)。在線Python文檔(寫作本書時的版本為3.6.x,當(dāng)你讀到這里時文檔版本很可能已經(jīng)更新了)提供了更多有關(guān)Python的參考資料,包括如下主題:
當(dāng)前Python版本添加的新特征;
完整教程;
完整庫參考;
完整語言參考;
如何安裝和配置Python;
如何使用Python執(zhí)行特定任務(wù);
從其他源安裝Python模塊(作為Python擴(kuò)展的手段);
發(fā)布自己創(chuàng)建的Python模塊,供其他人使用;
如何使用C/C++擴(kuò)展Python,以及嵌入你創(chuàng)建的新特征;
面向C/C++開發(fā)者(想使用Python擴(kuò)展他們的應(yīng)用程序)的完整參考;
FAQ頁面。

上面所有信息都是以易于訪問和使用的形式提供的。查找信息時,除了使用常見的內(nèi)容目錄之外,你還可以使用索引進(jìn)行查找。例如,如果你只對特定的模塊、類或方法感興趣,那么你可以使用全局模塊索引(Global Module Index)查找。
此外,你也可以把自己使用Python時遇到的問題在官網(wǎng)中進(jìn)行提交。雖然解決與產(chǎn)品相關(guān)的問題很重要,但是和其他語言一樣,Python中也會存在bug。找出和修正這些bug會讓Python變得更好。

在線文檔使用起來很靈活。在文檔頁面的左上角有兩個下拉列表框:第一個是語言下拉列表框,從中你可以選擇自己喜歡的語言(寫作本書時,只有英語、法語和日語3種語言可供選擇);第二個是Python版本選擇下拉列表框,里面提供了一些Python早期版本,包括Python 2.7。
2 使用LearnPython.org教程
網(wǎng)上Python學(xué)習(xí)教程有很多,大都做得很不錯,但相比于LearnPython網(wǎng)站上的教程,它們都有一個不足,那就是缺少交互性。在LearnPython網(wǎng)站上學(xué)習(xí)Python時,你不只是在閱讀有關(guān)Python的知識,還可以使用網(wǎng)站提供的交互環(huán)境親自動手試一試。
到這里,本書中的簡單教程你可能都學(xué)過了。但LearnPython網(wǎng)站上的一些高級教程你可能還沒學(xué)過。這些教程主要講解以下主題。
生成器:
返回迭代器的特殊函數(shù)。-?列表生成式:
一種基于現(xiàn)有列表生成新列表的方法。-?可變函數(shù)參數(shù):
對第15章“使用帶有可變參數(shù)列表的方法”內(nèi)容的補(bǔ)充。-?正則表達(dá)式:
用于匹配字符模式的通配符設(shè)置,比如電話號碼。-?異常處理:
對第10章內(nèi)容的擴(kuò)展。-?集合:
這是一種特殊的列表,里面不包含重復(fù)元素。-?序列化:
講解如何使用JSON這種數(shù)據(jù)存儲技術(shù)。-?偏函數(shù):
用于創(chuàng)建派生于較復(fù)雜函數(shù)的簡單函數(shù)的專門化版本。比如,你有一個帶有兩個參數(shù)的multiply()函數(shù),那么名為double()的偏函數(shù)可能只需要一個參數(shù),這個參數(shù)總是要乘以2。-?代碼審查:
提供檢查類、函數(shù)、關(guān)鍵字的能力,用于判斷用途和功能。-?裝飾器:
一種對可調(diào)用對象進(jìn)行簡單修改的方法。
3 使用Python做Web編程
本書探討了基本編程的來龍去脈,其中涉及的都是很簡單的桌面應(yīng)用程序。有許多開發(fā)人員專門使用Python創(chuàng)建各種各樣的在線應(yīng)用程序。Python Web編程網(wǎng)站可以幫助你從桌面程序開發(fā)轉(zhuǎn)向在線應(yīng)用程序開發(fā)。它并非只講解一種在線應(yīng)用程序,而是涵蓋了幾乎所有應(yīng)用程序(免費(fèi)提供整本書)。教程分為如下3個主要部分(和許多次要部分)。
服務(wù)器開發(fā)應(yīng)用程序服務(wù)器端框架創(chuàng)建CGI腳本提供服務(wù)器應(yīng)用程序開發(fā)內(nèi)容管理系統(tǒng)(CMS)通過Web服務(wù)方案設(shè)計數(shù)據(jù)訪問方法
客戶端使用瀏覽器和基于瀏覽器的技術(shù)創(chuàng)建基于瀏覽器的客戶端通過各種技術(shù)(包括Web服務(wù))訪問數(shù)據(jù)
相關(guān)為基于Python的在線計算創(chuàng)建通用方案使用數(shù)據(jù)庫管理系統(tǒng)(DBMS)設(shè)計應(yīng)用程序模板構(gòu)建內(nèi)部網(wǎng)解決方案
4 獲取更多庫
或許你會認(rèn)為Pythonware這個站點平淡無奇,但當(dāng)你進(jìn)入這個網(wǎng)站后,你就會被它深深吸引。這個網(wǎng)站提供了大量第三方庫,借助這些庫,你可以使用Python做更多的工作。
網(wǎng)站里面有大量鏈接,為我們提供了很多有用的資源。其中,通過“Downloads”這個鏈接你可以訪問如下庫。
aggdraw
:
這個庫幫助你繪制平滑的線條。-?celementtree
:
這個庫是elementtree庫的擴(kuò)展庫,可以讓你更快、更高效地使用XML數(shù)據(jù)。-?console
:
這是一個窗口界面,幫助我們創(chuàng)建出更好的控制臺程序。-?effbot
:
包含了許多有用的附加組件和實用程序,包括ENews RSS新聞閱讀器。-?elementsoap
:
這個庫可以幫助我們創(chuàng)建到Web服務(wù)提供者的SOAP(簡單對象訪問協(xié)議)連接。-?elementtidy
:
這是對elementtree庫的擴(kuò)展,可以幫助我們創(chuàng)建出更好看、功能更強(qiáng)大的XML樹。-?elementtree
:
這個庫可以幫助我們更高效地使用XML數(shù)據(jù)。-?exemaker
:
這是一個從Python腳本創(chuàng)建可執(zhí)行程序的實用程序,借助它,你可以在機(jī)器上像運(yùn)行其他應(yīng)用程序一樣運(yùn)行腳本。-?ftpparse
:
這個庫用來使用FTP站點。-?grabscreen
:
這個庫用來截屏。-?imaging
:
向Python圖像處理庫(PIL)提供源代碼分發(fā),該庫允許你向Python解釋器添加圖像處理功能。通過它,你可以定制PIL來滿足自己特定的需求。-?pil
:
PIL的二進(jìn)制安裝程序,它可以讓PIL庫更容易地安裝到你的系統(tǒng)中。(還有其他基于PIL的庫,比如pilfont庫,這個庫用于向基于PIL的應(yīng)用程序添加字體增強(qiáng)功能)。-?pythondoc
:
這個實用程序用來從Python代碼中的注釋創(chuàng)建文檔,其工作原理與JavaDoc類似。-?squeeze
:
這個實用程序用于將包含在多個文件中的Python程序轉(zhuǎn)換為單文件或雙文件的發(fā)行版,并能夠在Python解釋器中正常執(zhí)行。-?tkinter3000
:
這個庫是Python的標(biāo)準(zhǔn)GUI部件庫,包含許多子產(chǎn)品。這些部件本質(zhì)上是一些代碼,用于創(chuàng)建GUI應(yīng)用程序中的控件,如按鈕。tkinter3000庫有許多附加組件,例如wckgraph,它幫助你向應(yīng)用程序添加圖形支持。
5 使用IDE快速創(chuàng)建應(yīng)用程序
交互式開發(fā)環(huán)境(IDE)幫助你使用特定語言創(chuàng)建應(yīng)用程序。Python本身自帶了一個集成開發(fā)環(huán)境——IDLE,適合用來做代碼實驗,但用過一段時間之后你就會發(fā)現(xiàn)它有不少局限性,例如,IDLE并不提供許多開發(fā)人員喜歡的高級調(diào)試功能。另外,當(dāng)你要創(chuàng)建圖形應(yīng)用程序時,IDLE很難幫你做到這一點。
由于IDLE本身存在諸多的局限性,所以本書才決定采用Jupyter Notebook來代替IDLE(本書第一版采用的是IDLE)。不過,在某些情況下,你還是會發(fā)現(xiàn)Jupyter Notebook并不能滿足你的需求。如果你問50個開發(fā)人員哪些工具(尤其是問IDE時)是最好用的萬金油,他們的回答大都不一樣,幾乎很難達(dá)成共識。每個開發(fā)人員都有自己喜歡的工具,也都不太愿意去嘗試其他工具。通常,開發(fā)人員會花很多時間來學(xué)習(xí)某款I(lǐng)DE工具,并通過擴(kuò)展它以滿足自己特定的需求(當(dāng)然,這要求IDE本身支持?jǐn)U展)。
在選定某個IDE之前要多嘗試幾種不同的IDE,這點很重要,因為一旦你選定了某種IDE,以后就很難再做出改變了。(一旦你選中某個IDE之后,就不想再換成其他IDE了,其中最常見的原因是項目類型不兼容,每次換IDE時,你都必須重新創(chuàng)建項目,此外還有許多其他原因,你可以在網(wǎng)上找到)。PythonEditors維基主頁列出了許多IDE,你可以嘗試一下它們。并且表格中為你提供了每個IDE的詳細(xì)信息,你可以根據(jù)這些信息和自己的需求立即排除某些IDE。
6 更容易地檢查語法
IDLE提供了某種程度的語法高亮顯示功能,這有助于我們查找代碼中的錯誤。比如,如果你輸入錯誤的關(guān)鍵字,IDLE就不會將其顏色更改為系統(tǒng)中定義好的關(guān)鍵字顏色。這樣,你就可以立即知道錯誤出在哪里,以及如何修改它,而不必等到應(yīng)用程序運(yùn)行后才發(fā)現(xiàn)錯誤(有時需要經(jīng)過幾個小時的調(diào)試才能找到錯誤)。
Jupyter Notebook也提供了語法高亮顯示功能,還有一些標(biāo)準(zhǔn)IDE所不具備的高級錯誤檢查功能。不過,對于某些開發(fā)人員來說,它本身可能也有一些不足,比如你必須實際運(yùn)行單元格才能看到錯誤信息。有些開發(fā)人員更喜歡交互式語法檢查方式,在這種檢查方式中,IDE會立即標(biāo)記出代碼中的錯誤,甚至在開發(fā)人員離開錯誤代碼行之前,其中錯誤就已經(jīng)被標(biāo)識出來了。
python.vim實用程序提供了增強(qiáng)型的語法突出顯示功能,使得在Python腳本中查找錯誤更加容易。這個實用程序以腳本形式運(yùn)行,這使得它可以在任何平臺上都能快速、高效地使用。此外,你還可以根據(jù)需要調(diào)整其源代碼以滿足特定的需求。
7 使用XML
現(xiàn)在大多數(shù)應(yīng)用程序都使用可擴(kuò)展標(biāo)記語言(XML)來進(jìn)行各種類型的數(shù)據(jù)存儲工作。你的系統(tǒng)中可能就有很多XML文件,但你可能認(rèn)不出它們,因為XML數(shù)據(jù)存在于許多文件擴(kuò)展名之下。比如,許多用來保存應(yīng)用程序設(shè)置的.config文件使用的就是XML。簡而言之,現(xiàn)在的問題不是編寫Python應(yīng)用程序的過程中你會不會遇到XML,而是你什么時候會遇到它。
與其他存儲數(shù)據(jù)的方法相比,XML有許多優(yōu)點,比如,XML是平臺獨(dú)立的。你可以在任何系統(tǒng)上使用XML,只要系統(tǒng)認(rèn)識這種文件格式,同一個文件在不同系統(tǒng)上就都是可讀的。由于XML是平臺獨(dú)立的,所以你可以在許多其他技術(shù)(比如Web服務(wù))中看到XML的身影。此外,XML學(xué)起來相對容易,而且還是文本的,所以你可以大量使用它,而不用擔(dān)心會引起太多問題。

學(xué)習(xí)XML本身是很重要的,你可以在類似W3Schools的教學(xué)網(wǎng)站上查找相關(guān)教程來學(xué)習(xí)。有些開發(fā)人員在沒有掌握XML文件相關(guān)知識的情形下就急于著手做各種工作,后來他們發(fā)現(xiàn)有些Python資料看不懂,因為這些資料往往會假設(shè)讀者知道如何編寫基本的XML文件。W3Schools這個網(wǎng)站很不錯,它把整個學(xué)習(xí)過程分成若干章節(jié),這樣每次你就可以使用一些XML,如下:
XML基礎(chǔ)教程;
驗證你的XML文件;
XML和JavaScript(JavaScript看上去不重要,但在許多在線應(yīng)用場景中,JavaScript應(yīng)用廣泛)配合使用;
了解與XML相關(guān)的技術(shù);
使用XML高級技術(shù);
使用XML示例使XML更易用。
{利用W3Schools學(xué)習(xí)計算機(jī)技術(shù)!!}
在線學(xué)習(xí)計算機(jī)技術(shù)最常用的網(wǎng)站是W3Schools,你可以在其官網(wǎng)中找到要學(xué)習(xí)的內(nèi)容。在這個網(wǎng)站中,你可以找到創(chuàng)建各種應(yīng)用程序所需要的Web技術(shù)。所涉及的主題包括:
HTML;
CSS;
JavaScript;
SQL;
JQuery;
PHP;
XML;
ASP.NET。
但是,你應(yīng)該知道,這對Python開發(fā)人員來說只是一個起點。先利用W3Schools中的學(xué)習(xí)資料來切實掌握底層技術(shù),然后通過Python專門資料來提升你的技能。大多數(shù)Python開發(fā)人員都需要綜合各種學(xué)習(xí)資料來提升自己的技能,從而在編寫應(yīng)用程序的過程中展現(xiàn)出與眾不同的一面。
掌握了有關(guān)XML的基礎(chǔ)知識之后,你需要學(xué)習(xí)如何在Python中使用XML。網(wǎng)上有各種技術(shù)專題,你可以在各個網(wǎng)站中找到關(guān)于使用Python處理XML的教程。通過學(xué)習(xí)這些教程,你可以快速了解有關(guān)XML的知識,并讓你能夠快速創(chuàng)建出使用XML的Python應(yīng)用程序。
8 克服常見的Python新手錯誤
毫無疑問,每個人編寫代碼時都會犯錯誤,即便那些有著30多年編程經(jīng)驗的老程序員(他們大概從幼兒園就開始學(xué)習(xí)編程了)也不例外。每個人都會犯錯,但沒人喜歡犯錯,有些人犯了錯還不愿意承認(rèn),其實沒這必要,犯了錯時,不要太沮喪,只要把錯誤改正過來,你的生活就可以繼續(xù)下去。
當(dāng)然,犯錯誤和犯可以避免的常見錯誤是有區(qū)別的。不錯,即使是專業(yè)人士有時也會犯一些本可以避免的常見錯誤,但這種可能性要小很多,因為他們過去已經(jīng)經(jīng)歷過這種錯誤,并訓(xùn)練自己去避免它。你可以通過避免新手錯誤來獲得競爭優(yōu)勢。
對于剛開始學(xué)習(xí)Python的人來說,還有許多其他資料可用,但是相比之下,上面這些資料內(nèi)容簡潔且容易理解。你可以在較短的時間內(nèi)讀完它們,做一些筆記以備用,并避免那些讓每個人都會記住的尷尬錯誤。
9 了解Unicode
盡管本書試圖回避Unicode這個棘手的話題,但是當(dāng)你開始編寫正規(guī)應(yīng)用程序時,你最終還是會碰到它。不過,遺憾的是,Unicode是由一個委員會來決定的,所以最終就有了不止一個定義和標(biāo)準(zhǔn)。簡而言之,Unicode沒有一個統(tǒng)一的定義。
當(dāng)你開始使用更高級的Python應(yīng)用程序時,你會遇到大量的Unicode標(biāo)準(zhǔn),特別是當(dāng)你的程序要在多種語言(每種語言似乎都有自己的Unicode)下運(yùn)行時。請記住,我們需要了解Unicode是什么,下面提供給你一些學(xué)習(xí)主題:
Unicode和字符集;
Python中的Unicode更新;
Python編碼和Unicode;
Unicode概述,參見Unicode官網(wǎng)。
##10 加快Python程序的運(yùn)行速度
就應(yīng)用程序來說,沒有什么比性能差更能嚇跑用戶的了。當(dāng)應(yīng)用程序性能很差時,用戶根本就不愿意使用它。事實上,糟糕的性能是造成應(yīng)用程序在企業(yè)環(huán)境中失敗的一個重要原因。即便有組織愿意花費(fèi)大量金錢去創(chuàng)建一個萬能的應(yīng)用程序,但是如果這個程序的運(yùn)行速度太慢,或者有嚴(yán)重的性能問題,也不會有人愿意使用它。

事實上,性能是可靠性、安全性和速度的綜合,這3個因素構(gòu)成了“性能三角”。你可以在作者的博客中讀到有關(guān)性能三角形的內(nèi)容。許多開發(fā)人員只關(guān)注性能的速度部分,但最終沒能實現(xiàn)他們的目標(biāo)。重要的是查看應(yīng)用程序使用資源的各個方面,并確保你使用了最好的編碼技術(shù)。
網(wǎng)上有很多資源可以幫助你理解Python應(yīng)用程序的性能,但又都很雜亂希望讀者可以廣泛學(xué)習(xí)。
喜歡up主的分享,麻煩給up主一個小小的關(guān)注以示鼓勵? ? 嘻嘻嘻?。?!
需要相關(guān)編程學(xué)習(xí)資料后臺主動打招呼,up主會一個一個分享給你?