文 | 陳少文 1. 了解新語言產(chǎn)生的背景ABC 是專門為非專業(yè)程序員設(shè)計(jì)的一種教學(xué)語言,但是由于其封閉,,并未取得成功,。1989年的圣誕節(jié)期間,,吉多·范羅蘇姆開發(fā)了一個(gè)新的腳本解釋器,并命名為 Python,,作為 ABC 語言的一種繼承,。新的腳本解釋器開放,完美結(jié)合了 Unix Shell 和 C 的使用習(xí)慣,。 2. 了解新語言應(yīng)用的場景
3. 了解新語言的特點(diǎn)Python 的設(shè)計(jì)哲學(xué)是:優(yōu)雅、明確,、簡單,。Python 的開發(fā)哲學(xué)是:用一種方法,最好是只有一種方法來做一件事,,有些類似 Unix,。與其他語言非常不一樣的是,Python 以縮進(jìn)來確定語句塊,。 Python 是一門面向?qū)ο蟮膭討B(tài),、解釋型語言,具有出色的模塊化特性,。同時(shí),,Python 擁有大量的第三方開源包,,可以直接使用,,極大地提高了開發(fā)效率。Python 編寫的代碼,,可讀性強(qiáng),,特別適合多人大型項(xiàng)目的開發(fā)。但是 Python 的執(zhí)行效率比不上 C/C++ 這類編譯型語言,。 4. 學(xué)習(xí)新語言的數(shù)據(jù)結(jié)構(gòu)Python 中內(nèi)置類型有整型 int,,浮點(diǎn)型 float,,布爾型 bool,字符串 str,,列表 list,,元組 tuple,字典 dict,,集合 set,。與 C 不同的是,Python 并不依賴于關(guān)鍵字定義各種類型,。Python 是動態(tài)強(qiáng)類型語言,,是通過運(yùn)行時(shí),自動選擇合適的數(shù)據(jù)類型,。字符串,、列表、元組,、集合,、字典等復(fù)雜數(shù)據(jù)類型,并不是 C 語言的內(nèi)置類型,。 5. 學(xué)習(xí)新語言的邏輯結(jié)構(gòu)if 條件判斷結(jié)構(gòu)
for 循環(huán)結(jié)構(gòu)
while 循環(huán)結(jié)構(gòu)
Keywords: if; for; while; 6. 學(xué)習(xí)定義一個(gè)獨(dú)立模塊定義函數(shù):
定義類:
定義包:Python 中定義一個(gè)包,只需要在文件夾里面,,創(chuàng)建一個(gè) init.py文件即可,,如:
那么在其他文件中,就可以通過 from mypackage import views 的語法,,從 mypackage 這個(gè)包里面導(dǎo)入 views ,。 7. 做一個(gè)小的項(xiàng)目嘗試完成一次領(lǐng)域?qū)嵺`,是對這個(gè)領(lǐng)域最佳的入門方式,。學(xué)習(xí)一門新的編程語言,,成長最快的階段在,利用這門編程語言完成項(xiàng)目需求期間,。 Django 是一個(gè)十分優(yōu)秀的 Python 寫的 Web 程序框架,,廣泛用于數(shù)據(jù)驅(qū)動類的網(wǎng)站開發(fā)。Django 是一個(gè)大而全的開發(fā)框架,,基本不需要額外的第三方配置,,就可以快速地進(jìn)行開發(fā)。 筆者的小項(xiàng)目需求是:利用二維碼掃碼,,查看在線簡歷,。 確定項(xiàng)目需求之后,,會迎來一個(gè)手足無措的時(shí)期,不知道從哪里著手開始做項(xiàng)目,。如果有一個(gè)過來人指導(dǎo)一下,,那么很快就能開始編碼了。不幸的是,,筆者當(dāng)時(shí)身邊并沒有這樣一個(gè)人,。在網(wǎng)上查閱資料后,最終選定了Jquery ,、Foundation,、Django 實(shí)現(xiàn)這個(gè)項(xiàng)目。 實(shí)際上,,筆者在此之前一直在寫 C++ 程序,,并沒有 Python 的編程基礎(chǔ),僅僅是因?yàn)檫@個(gè)小項(xiàng)目,,選定的技術(shù)棧后臺使用的是 Django ,,才開始學(xué)習(xí) Python。 除了掌握項(xiàng)目使用到的技術(shù)棧,,在完成項(xiàng)目的過程中,,還可以解鎖調(diào)試技能、通過搜索引擎解決各種程序問題的能力,。 為了完成這個(gè)小項(xiàng)目,,需要走出舒適區(qū),突破原有的技術(shù)棧,,最終獲得快速的技術(shù)成長,。 8. 學(xué)習(xí)使用庫完成任務(wù)通常,發(fā)布者會將使用頻率高,、可以復(fù)用的功能,,打包成庫,提供給大家共同使用,。 庫可以分為兩類:
例如,,Django 中提供了 from django.views.decorators.http import require_POST 裝飾器用于確保 view 函數(shù)的請求方法是 POST。使用這個(gè)裝飾器可以簡化 view 函數(shù)中的條件判斷,,有利于編寫簡潔易讀的代碼,。當(dāng)然 ,Django 還有大量的第三方 App可以下載使用,,直接提供一個(gè)完整功能,。 在項(xiàng)目開發(fā)的過程中,合理地使用庫會起到錦上添花的效果,。 9. 學(xué)習(xí)組織代碼結(jié)構(gòu)研究怎樣更好的組織項(xiàng)目的代碼是一門管理科學(xué),。筆者之前也寫過相關(guān)的文章 討論了 Django 工程的目錄組織結(jié)構(gòu)。 好的項(xiàng)目代碼結(jié)構(gòu)需要學(xué)習(xí)一些高關(guān)注度的開源項(xiàng)目的經(jīng)驗(yàn),,也需要注意輸出,,成為大家共同的標(biāo)準(zhǔn),共同維護(hù),,產(chǎn)生影響力,。 10. 學(xué)習(xí)讓代碼易維護(hù)代碼維護(hù)分為兩類: Bug 易修復(fù),需要代碼具有良好的命名習(xí)慣,、注釋,、日志輸出,實(shí)現(xiàn)相同的功能編寫盡量少的代碼 新功能的擴(kuò)展,,通常是在原有邏輯上,,創(chuàng)建新的分支。這類分支又可以分為代碼級別和常量級別,。我們需要的是通過常量的配置擴(kuò)展新功能,,而減少代碼級別的修改 11. 提高代碼復(fù)用率隨著使用新語言年限的增長,參與項(xiàng)目的增多,,會出現(xiàn)一個(gè)顯而易見的問題:在不同的項(xiàng)目中,,會有一些非常類似的功能。甚至在開發(fā)新項(xiàng)目時(shí),,有時(shí)還會去以前項(xiàng)目中拷貝代碼,。 這時(shí),應(yīng)該思考如何提高代碼的復(fù)用率,,如何提供公共組件,。 代碼的復(fù)用可以分為:
從項(xiàng)目中分離公共組件的過程,,需要關(guān)注模塊內(nèi)的高內(nèi)聚,模塊間的低耦合,。在模塊分離的過程中,,我們會更加深入地去理解應(yīng)用系統(tǒng)。這一過程的完成,又將極大地提高開發(fā)效率,。 更重要的是,,我們不僅僅從項(xiàng)目中分離出一個(gè)公共組件,在使用其他人提供的公共組件時(shí),,也會變得容易,。 下一次項(xiàng)目開發(fā)時(shí),需要一個(gè)新功能,,你首先想到的可能不是編碼,,而是去公共組件庫或 Github 搜索有沒有類似的包,然后經(jīng)過簡單的改造就能在項(xiàng)目使用,。 12. 關(guān)注性能針對 Web 應(yīng)用,,高并發(fā)、高可用,、高一致性始終是亙古不變的議題,。在對應(yīng)用系統(tǒng)不斷發(fā)起挑戰(zhàn)時(shí),那些隱藏的曾經(jīng)被忽略的問題才會逐漸顯現(xiàn),。在這個(gè)過程中,,不斷地發(fā)現(xiàn)應(yīng)用系統(tǒng)的瓶頸,解決這些瓶頸,,循環(huán)往復(fù),,不斷加深對業(yè)務(wù)、對應(yīng)用系統(tǒng)的理解,。 性能報(bào)告是性能測試輸出的結(jié)果,。性能報(bào)告就像質(zhì)檢報(bào)告一樣,是讓用戶信任和使用產(chǎn)品的憑證,。高并發(fā),、高可用、高一致,,并不是口號,,需要數(shù)據(jù)的舉證,需要不斷的優(yōu)化性能,。 13. 源碼閱讀閱讀源代碼有利于提高自己的代碼水平,。閱讀 Python 解釋器的源碼,有利于編寫高性能的代碼,。閱讀 Django 源碼有利于編寫易維護(hù),、易更新的 Django App。從開始學(xué)習(xí)這門新語言時(shí),,就可以開始嘗試閱讀源代碼,。 題圖:pexels,,CC0 授權(quán)。
|
|