Python大神,requests庫的作者放大招了
只要是學爬蟲的同學,相信無人不知的,無人不曉requests庫!requests這個庫號稱為人類而寫的http庫("Python HTTP Requests for Humans"),非常好用,功能強大!
它的作者就是大名鼎鼎的Kenneth Reitz,這位大神非常牛逼,功力深厚還愛好攝影,對美學有自己的追求,能把這種美學的意境運用到代碼上,非常厲害!
今天去逛他的github,發現他出了一本Python-guide書,趕緊去圍觀學習了一下受益匪淺!本書是號稱Python best practices guidebook, written for Humans,目前有一萬三千多的點贊量!
這本書內容非常豐富,從win/linux/os的開發環境的安裝,到開發工具推薦和設置,到如何寫成優雅的代碼,再到Python應用場景的指南比如(網路應用,web開發,命令行的應用,GUI的應用),資料庫,系統管理,持續集成和資料庫等等,下面我摘錄了某一章節裡面的部分片段:
Writing Great Python Code
這部分指南關注編寫Python代碼的最佳實踐。
結構化您的工程
倉庫的結構
結構是一把鑰匙
模塊
包
面向對象編程
裝飾器
上下文管理器
動態類型
可變和不可變類型
提供依賴關係
Runners
更多閱讀
代碼風格
一般概念
習語(Idiom)
Python之禪
PEP 8
約定
1.模塊
Python模塊是最主要的抽象層之一,並且很可能是最自然的一個,抽象層允許將代碼分為 不同部分,每個部分包含相關的數據與功能:
可以使用import語句的特殊形式from modu import * 模擬更標準的行為。
但 import* 通常 被認為是不好的做法,但是使用 from modu import * 的代碼較難閱讀而且依賴獨立性不足。
使用 from modu import func 能精確定位您想導入的方法並將其放到全局命名空間中。
比 from modu import * 要好些,因為它明確地指明往全局命名空間中導入了什麼方法。
2.動態類型
Python是動態類型語言,這意味著變數並沒有固定的類型。實際上,Python 中的變數和其他語言有很大的不同,特別是靜態類型語言。
變數並不是計算機內存中被寫入的某個值,它們只是指向內存的 『標籤』 或 『名稱』 。
因此可能存在這樣的情況,變數 『a』 先代表值1,然後變成字元串 『a string』 , 然後又變為指向一個函數:
3.明確的代碼
在存在各種黑魔法的Python中,我們提倡最明確和直接的編碼方式:
4.每行一個聲明
複合語句(比如說列表推導)因其簡潔和表達性受到推崇,但在同一行代碼中寫兩條獨立的語句是糟糕的:
5.返回值
當一個函數變得複雜,在函數體中使用多返回值的語句並不少見。然而,為了保持函數的明確意圖以及一個可持續的可讀水平,更建議在函數體中避免使用返回多個有意義的值。
儘管如此,當一個函數在其正常過程中有多個主要出口點時,它會變得難以調試和返回其 結果,所以保持單個出口點可能會更好。
這也將有助於提取某些代碼路徑,而且多個出口點 很有可能意味著這裡需要重構。
上面只是一些書里的很少的部分,大神的內容非常豐富而且全面,非常成體系!值得細細推敲和咀嚼,對提高Python的功勞大有裨益,還等什麼,趕緊去圍觀吧.
學好Python你需要一個良好的環境,一個優質的開發交流裙,裙里都是那種相互幫助的人才是可以的,我有建立一個Python學習交流裙,在裙里我們相互幫助,相互關心,相互分享內容,這樣出問題幫助你的人就比較多,裙號是六三九五八四零一零,這樣就可以找到大神聚合的裙,如果你只願意別人幫助你,不願意分享或者幫助別人,那就請不要加了,你把你會的告訴別人這是一種分享。
※Python 即將停止支持Python 2.7,全面轉向 Python 3
※Python&QQBot:一個簡單、好用的QQ機器人
TAG:Python |