為什么python格式這么容易出錯(cuò)?
Python附帶了一大堆標(biāo)準(zhǔn)模塊,實(shí)現(xiàn)了廣泛的功能,包括文本處理,各種數(shù)據(jù)類型,網(wǎng)絡(luò)內(nèi)容(低級(jí)和高級(jí)),文檔處理,文件存檔處理,日志記錄所有這些都記錄在Python庫(kù)文檔中,因此必須至少瀏覽可用模塊列表,因此您可以獲得默認(rèn)情況下可以使用的概念。示例:如果您沒有任何性能需求,請(qǐng)不要在Twisted上引入依賴項(xiàng)來(lái)實(shí)現(xiàn)非常基本且簡(jiǎn)單的自定義HTTP服務(wù)器,請(qǐng)使用BaseHTTPServer和衍生項(xiàng)。
Python是Python,不要試圖模仿來(lái)自其他語(yǔ)言的錯(cuò)誤編碼模式
Python是一種成熟的編程語(yǔ)言,它提供了很大的靈活性,但也有一些非常具體的模式,你可能不知道以前使用過的其他語(yǔ)言。
舉個(gè)例子,根本不要試圖模仿PHP的'include'或'require'函數(shù)。這可以通過在頂層的模塊中編寫要包含(并在包含上執(zhí)行)的代碼(即不在函數(shù)/ classes / ...中),并使用類似'from foo import *'的內(nèi)容來(lái)完成。你想要執(zhí)行這個(gè)代碼。這可行,但可能很難維持這一點(diǎn)。模塊不應(yīng)該像這樣使用,所以不要這樣。如果您需要在某個(gè)時(shí)刻執(zhí)行某些代碼,請(qǐng)將其作為函數(shù)放入模塊中,導(dǎo)入該函數(shù)并在任何位置調(diào)用它。
不要污染全局命名空間
不要使用'from foo import *',因?yàn)檫@會(huì)引入foo中定義的所有內(nèi)容,還會(huì)引入foo中導(dǎo)入的所有模塊,甚至可能導(dǎo)入它們等等。嘗試'import foo'和使用foo.whatever,或者使用'from foo import whatever,somethingelse'。顯式導(dǎo)入使代碼更具可讀性,并且可以更容易地確定在當(dāng)前模塊中使用的模塊中定義的內(nèi)容,如果它是由您的許多全局導(dǎo)入之一導(dǎo)入的話。
使用Pythonesque編碼模式
這顯然與前一項(xiàng)非常相關(guān)。Python有一些眾所周知的結(jié)構(gòu)來(lái)處理某些情況。了解并理解它們。
記錄您的代碼
Python具有稱為docstrings的強(qiáng)大語(yǔ)言功能。嚴(yán)格地將它們?yōu)⒃谡麄€(gè)代碼中。在編寫函數(shù)/類時(shí)執(zhí)行此操作,而不是之后。每個(gè)人都知道這非常無(wú)聊和令人沮喪。
寫測(cè)試
編寫測(cè)試代碼。Python包括至少2種編寫測(cè)試的方法:使用標(biāo)準(zhǔn)單元測(cè)試,或使用doctests,包含在文檔字符串中的測(cè)試代碼片段,既有用又有說(shuō)明性。如果您無(wú)法測(cè)試結(jié)果,則無(wú)法知道某些代碼重構(gòu)是否順利。