史上最全的Python開發祕籍,學完這些年薪百萬不是問題

Python 之所以這麼流行得益於它適用於很多不同領域,目前 Python 使用最廣泛的領域包括有 Python Web(後端)開發、數據分析挖掘、網絡爬蟲、機器學習人工智能、運維開發等等。不管你選擇哪個方向,把Python基礎學牢有利於你在該領域更好的施展拳腳。



何爲神奇方法呢?它們是面向Python中的一切,是一些特殊的方法允許在自己的定義類中定義增加“神奇”的功能。它們總是使用雙下劃線(比如__init__或__lt__),但它們的文檔沒有很好地把它們表現出來。所有這些神奇方法都出現在Python的官方文檔中,但內容相對分散,組織結構也顯得鬆散。還有你會難以發現一個實例(雖然他們被設計很棒,在語言參考中被詳細描述,可之後就會伴隨着枯燥的語法描述等)。

爲了彌補Python官方文檔的這些缺陷,作者整理了這篇有關magic method的文章,旨在用作教程、複習或參考文檔。


我用 Python 編程有幾年了, 並且我仍然經常驚訝於 Python 代碼可以如何的簡潔,如何的 DRY 。 我學到了很多小貼士和技巧,大多數來自於閱讀開源項目的源代碼,像 Django, Flask, Requests 等。學習資料也可以加下Python扣扣裙:3零4零5零799自己下載學習下。

這裏我挑出了幾個有時被大家忽略的幾條,但是它們在日常工作中會有很大幫助。

字典和集合推導式

大多數 Python 開發者知道使用列表推導式。你不熟悉這一點? 一個列表推導式是一個創造列表的簡短方式:

>>> some_list = [1, 2, 3, 4, 5]

從 Python 3.1 開始(也反向地移植到了 Python 2.7),我們可以用同樣的方式創建集合和字典:

>>> # Set Comprehensions

第一個例子中,我們用 some_list 建立了一個元素不重複的集合,但只有偶數。第二個字典的例子中展示了一個字典的創建,這個字典的鍵是1到10(包括10),值是布爾值,指明該鍵是不是一個偶數。

另一個值得注意的地方是集合的文法,我們可以這麼簡單的創建一個集合:

>>> my_set = {1, 2, 1, 2, 3, 4}

而沒有使用到內建的 set 方法

使用計數器對象計數

很明顯,但很容易遺忘。計數是一個尋常不過的編程任務,而且大多數情形下這不是個難事。不過計數可以更簡單。

Python 的 collections 庫包含一個 dict 的子類,專門解決計數任務:

>>> from collections import Counter

漂亮的打印 JSON

JSON 是一個很棒的序列格式,如今廣泛應用在 API 和 web 服務中,但是很難用裸眼來看大數據量的 JSON ,它們很長,還在一行裏。

可以用參數 indent 來更好地打印 JSON 數據,這在跟 REPL 或是日誌打交道的時候很有用:

>>> import json

另外,去看看內建模塊 pprint , 它可以幫助你漂亮地輸出其它的東西。

快速建立一個 web 服務

有時我們需要一個建立 RPC 服務簡單而快速的方法。我們需要的只是讓程序B去調用程序A(可能在另一個機器上)的方法。

我們不用瞭解關於這個的任何技術,但是我們只是需要這麼個簡單的東西,我們可以使用一個叫做 XML-RPC 的協議(對應的 Python 庫實現 SimpleXMLRPCServer )來處理這種事。

這裏是一個簡單粗糙的文件閱讀服務器:

from SimpleXMLRPCServer import SimpleXMLRPCServer

響應它的客戶端:

import xmlrpclib

現在我們就有了一個遠程的文件閱讀器,除了一點代碼,沒有外部依賴。(當然,不安全,所以只在”家”用這個吧)

Python 的開源社區

剛我一直在說 Python 的標準庫了,這些庫只要你安裝 Python 就會包含在你的 Python 中。對於大多數的其他任務,這裏有大量的社區維護的第三方庫來滿足我們的需求。

這是一個我挑選 Python 庫的辦法:

包含一個明確的協議,以便我們使用

積極活躍的開發和維護

可以用 pip 來安裝,可以輕易地重複部署

擁有一個合適覆蓋率的測試集

如果你發現了一個適合你需求的 Python 庫,不要害羞,大多數開源項目歡迎我們貢獻代碼和協助,即使你不是一個Python 老將。幫助之手隨時受歡迎!


追加的技巧

快速在一個目錄建立 HTTP 服務器

python -m SimpleHTTPServer 推薦:共享文件常用

在 Python 3 中:

python -m http.server 推薦:共享文件常用

命令行上漂亮地打印 JSON:

echo '{"json":"obj"}' | python -mjson.tool

而且,如果你安裝了 Pygments 模塊,可以高亮地打印 JSON:

echo '{"json":"obj"}' | python -mjson.tool | pygmentize -l json


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章