玩轉(zhuǎn)Python的8個(gè)正確的基本姿態(tài)

這樣說吧:如果遵循了這8種超棒的Python編程實(shí)踐,那么你就摸準(zhǔn)了Python小機(jī)關(guān),保證了順利地做事的基本指導(dǎo)。

前言

當(dāng)你正在開發(fā)的程序出現(xiàn)錯(cuò)誤時(shí),通常很容易判斷。比如不知道從哪里冒出來的bug,像爛泥一樣運(yùn)行的代碼,笨拙的項(xiàng)目結(jié)構(gòu),這僅只是三個(gè)暴露問題的跡象。但有時(shí)候,要判斷自己做得是否正確卻不是那么容易。良好的編程習(xí)慣就像電影中最好的特效:你永遠(yuǎn)不會(huì)注意到它們的存在,因?yàn)樗鼈儚牟还_宣告自己的存在。

那么在Python中又有哪些標(biāo)志是體現(xiàn)好的編程實(shí)踐呢?如果您是這門語言的新手,并且您對(duì)良好的Python開發(fā)行為可能有一些了解,或者您只是想知道您已經(jīng)養(yǎng)成的一些習(xí)慣是否值得保留,那么我們?yōu)槟占艘唤M指導(dǎo)方針。如果您遵循下面列出的 **8個(gè)最佳實(shí)踐準(zhǔn)則 **,那么您的Python編程基本有保障了——已開啟了正確的基本模式。

1.使用虛擬環(huán)境和項(xiàng)目管理工具

即使是小型的、一次性的Python項(xiàng)目也可以通過虛擬環(huán)境和適當(dāng)?shù)捻?xiàng)目結(jié)構(gòu)從中受益。像 **Poetry **這樣的工具使安裝過程幾乎是自動(dòng)的。即使是較低的venv也可以相對(duì)直接地用虛擬環(huán)境來組建您的項(xiàng)目,并從中獲益。

版本控制是另一個(gè)重要的項(xiàng)目管理工具。如今,這通常意味著Git。即使對(duì)于簡單的單文件項(xiàng)目,也可以利用Git。您永遠(yuǎn)不知道需要回滾到某個(gè)東西的早期版本會(huì)在什么時(shí)候。大多數(shù)支持Python的ide還內(nèi)置了對(duì)venv和Git的支持,因此使用它們很容易。

2.使用Python內(nèi)建函數(shù),而不重新發(fā)明輪子

精明的Python程序員都知道利用Python的 **內(nèi)置函數(shù) **和 **標(biāo)準(zhǔn)庫 **來處理絕大多數(shù)常見用例。大多數(shù)你需要完成的例行任務(wù)——文件操作、正則表達(dá)式、使用web瀏覽器等等——都已經(jīng)在Python中有相應(yīng)交互支持實(shí)現(xiàn)。

經(jīng)驗(yàn)較少的Python開發(fā)人員常問的一個(gè)問題是,我如何知道標(biāo)準(zhǔn)庫中的內(nèi)容是否涵蓋了我的用例,而不必記住那些內(nèi)容?簡單的答案是將標(biāo)準(zhǔn)庫索引和內(nèi)置函數(shù)概覽頁面添加為書簽,并在遇到“日常編程”之類的問題時(shí)瀏覽它們。不斷接觸查看Python中可用的工具,這本身就是一個(gè)強(qiáng)大的老師。

3.使用工作所需的正確模塊

與內(nèi)置函數(shù)和標(biāo)準(zhǔn)庫一樣,使用Python的龐大的第三方模塊集合是一種節(jié)省勞力的方法。通過PyPI的web前端為您的問題啟動(dòng)一個(gè)搜索詞,您幾乎總會(huì)找到開箱即用解決方案的模塊。同樣,當(dāng)您可以找到并通過pip安裝它時(shí),為什么要重新發(fā)明(Python)輪子呢?另外,許多Python模塊具有 C語言 加速的性能,這意味著當(dāng)使用其他模塊時(shí),您可以獲得更快的開發(fā)速度和更快的程序執(zhí)行速度。

一個(gè)經(jīng)常出現(xiàn)的問題是:如果處理用例場景有多個(gè)模塊可用,我應(yīng)該使用哪一個(gè)?簡單的答案是,從使用最多或勢頭最大的項(xiàng)目開始(例如,GitHub stars或forks所顯示的),因?yàn)槟挠美苡锌赡芘c許多其他人的用例相同。

4.OOP不會(huì)讓你發(fā)瘋

面向?qū)ο缶幊?OOP)將數(shù)據(jù)結(jié)構(gòu)與用于操作它們的方法捆綁在一起,使編寫高級(jí)代碼變得更容易。對(duì)于像Python這樣的高級(jí)語言,OOP非常適合。但并不是所有的Python代碼都需要是面向?qū)ο蟮?。熟悉Python的開發(fā)人員知道,與面向?qū)ο蟮奶娲椒ㄏ啾龋?0行(甚至200行)“一步到位”(get-it-done-and-get-on-with-it)的代碼可以節(jié)省寶貴的時(shí)間,如有選擇就不要用OOP方法??偟膩碚f,大型和復(fù)雜的項(xiàng)目確實(shí)從面向?qū)ο笾惺芤妫浅琼?xiàng)目需要面向?qū)ο?,否則可以放寬規(guī)則。

5.保持測試代碼為標(biāo)準(zhǔn)行為

說到在更大的項(xiàng)目中完成的事情,明智的python開發(fā)者知道創(chuàng)建測試套件的價(jià)值。盡管編寫測試很乏味,但當(dāng)項(xiàng)目發(fā)展到一定程度的復(fù)雜性時(shí),它們是無價(jià)的。更高級(jí)的掌握能力的一個(gè)標(biāo)志是,與每個(gè)新特性并行構(gòu)建相應(yīng)測試,而不是事后構(gòu)建。實(shí)際上,越早克服編寫測試的困難,就越早開始改進(jìn)代碼。從實(shí)現(xiàn)第一個(gè)特性就開啟測試,您會(huì)得意地感覺自己編程工作溜溜的。

6.算了吧,就不要用python 2

把Python2遺忘在歷史中吧,去年是這樣,現(xiàn)在更是如此。Python 2已經(jīng)運(yùn)行了很長時(shí)間,但是它現(xiàn)在完全不受官方Python開發(fā)團(tuán)隊(duì)的支持。明智的Pythonistas已經(jīng)將他們的項(xiàng)目遷移到python3,或者現(xiàn)在正在這樣做。

7.也不要使用最新版本的Python

Python 3.8可能是Python的最新和“最棒”的版本,但這并不意味著您必須使用它。事實(shí)上,聰明的軟件開發(fā)人員明白,使用任何東西的最新版本都是碰運(yùn)氣。Python也不例外。作為一位精明的Python程序員,要堅(jiān)持在最新得到最廣泛采用前,使用其之前版本,以確保與第三方模塊最廣泛的兼容性。畢竟,利用所有已存在的這些有用模塊的能力是使用Python的首要原因之一。

8.酌情使用其他的 編程語言

幾乎在所有方面Python都被描述為“第二好的編程語言”——有時(shí)最好和第二好的之間的差距的確很大。但是作為一名明智的Python開發(fā)人員應(yīng)該知道:在眾多工具中Python也只是其中的一種,應(yīng)該始終利用正確的工具來完成手頭的工作。

對(duì)于需要最大運(yùn)行速度的應(yīng)用程序或操作,您可能不希望使用純Python,而是C或Rust,甚至Go,只要能把他玩轉(zhuǎn)。但并非所有性能密集型編程都意味著完全將Python放棄。也許它僅僅意味著使用像Numpy或Pandas這樣的基于C語言的庫,或者在Python shell中包裝C語言或兼容C語言的代碼,或者使 用Cython將Python轉(zhuǎn)換為C語言 。

9.小結(jié)

本文簡單談了下Python編程使用的8個(gè)正確行為和態(tài)度,對(duì)照一下自己是否有需要改進(jìn)的地方呢。或者你有什么想法,分享出來吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 想學(xué)習(xí)Python 加群:778570108 教學(xué)視頻分享和在線課堂,專業(yè)講學(xué)。 人生苦短,很高興你選擇了pyth...
    志者不俗閱讀 419評(píng)論 0 0
  • 夜鶯2517閱讀 128,145評(píng)論 1 9
  • 版本:ios 1.2.1 亮點(diǎn): 1.app角標(biāo)可以實(shí)時(shí)更新天氣溫度或選擇空氣質(zhì)量,建議處女座就不要選了,不然老想...
    我就是沉沉閱讀 7,441評(píng)論 1 6
  • 我是一名過去式的高三狗,很可悲,在這三年里我沒有戀愛,看著同齡的小伙伴們一對(duì)兒一對(duì)兒的,我的心不好受。怎么說呢,高...
    小娘紙閱讀 3,807評(píng)論 4 7
  • 這些日子就像是一天一天在倒計(jì)時(shí) 一想到他走了 心里就是說不出的滋味 從幾個(gè)月前認(rèn)識(shí)他開始 就意識(shí)到終究會(huì)發(fā)生的 只...
    栗子a閱讀 1,717評(píng)論 1 3

友情鏈接更多精彩內(nèi)容