26個你不知道的Python技巧,打包帶走!

導讀:Python是目前世界上最流行的編程語言之一。由於:html

  1. 它容易學習
  2. 它用途超廣
  3. 它有很是多的開源支持(大量的模塊和庫)

本文做者 Peter Gleeson 是一名數據科學家,平常工做幾乎離不開python。一路走來,他積累了很多有用的技巧和tips,如今分享給你們。這些技巧將根據其首字母按A-Z的順序進行展現。python


機器學習


01 all or any

Python之因此成爲這麼一門受歡迎的語言一個緣由是它的可讀性和表達能力很是強。Python也所以常常被調侃爲「可執行的僞代碼」。不信你看: 編程

Python代碼


02 bashplotlib

你想要在控制檯繪圖嘛? api

python繪圖
如今,你的控制檯中就能夠有圖了


3 collections

Python有一些很棒的默認數據類型,可是有時候他們並不會像你所但願的那樣發揮做用。 幸運的是,Python 標準庫提供了collection模塊。它讓你可使用更爲多樣數據類型。 bash

collection模塊


04 dir

面對一個Python對象,你是否曾想過能夠直接看到其屬性?你也許能夠試試如下的代碼: 數據結構

Python對象


這是運行Python的時候一個很是有用的功能,用於動態探索你所使用的對象和模塊。更多詳情,能夠查看這裏:多線程

docs.python.org/3/library/f…機器學習

05 emoji

對的,你沒看錯!編程語言


用python來建立表情包,你也能夠。編輯器


06 from future import

Python很是受歡迎,這也就致使了它的版本更新很是快,新的版本每每會有不少新特性。你不更新,就沒法使用。


然而,不要懼怕。future 模塊可讓你導入將來版本的功能。有點像時空穿梭有木有!


07 geopy

對於程序猿來講地理多是一個很是有挑戰性的領域。可是,geopy模塊則讓它變得很是簡單。

它經過提取一系列不一樣地理編碼服務的api來工做,讓你可以得到一個地方的完整街道地址、緯度、經度,甚至海拔。

這裏面同時還包含一個有用的「距離」類別。它能使用你選定的度量去計算了兩個地點之間的距離。


08 howdoi

有時候你碰到了一個編程問題,以爲本身以前明明見過它的解決方法,可是卻記不起來具體是怎麼樣的了。因而你想要去StackOverflow上找,但又不想離開這個終端。這個時候,你須要下面這個工具——howdoi

你所遇到的任何問題均可以問它,它會盡他所能給你返回一個答案。

須要注意的是——它只從StackOverflow最頂端的答案中抓取代碼。因此它給你返回的不老是最有用的信息...


09 inspect

Python的inspect模塊用於收集Python對象的信息,能夠獲取類或函數的參數的信息,源碼,解析堆棧等等。


下方的代碼樣例使用了 inspect.getsource() 來打印它自身的源碼。一樣還使用了 inspect.getmodule()來打印定義了inspect.getmodule()的模塊。最後一行代碼則是打印了本行代碼所在的行號。在本例中,就是 4 。


nspect模塊能夠有效地讓你知道你的代碼是如何工做的,你也能夠利用它來完成一些我的的源碼。


10 Jedi

Jedi庫是一個代碼自動補齊和靜態分析的庫。它可使你更快更高效地書寫代碼。除非你在開發本身的編輯器,不然你可能會很是喜歡將Jedi做爲本身的編輯插件。


你可能已經正在使用Jedi而只是沒發現。IPython項目就是利用Jedi來實現其自動補全功能。


11 **kwargs

不管你學習那種語言,在這條學習之路上總有那麼一些里程碑。在Python的編程學習中,理解神祕的**kwargs語法應該算是一個重要的里程碑。


雙星「**」放在字典的前面可讓你將字典的內容做爲命名參數傳遞給函數。字典的鍵是參數的名字,鍵的值做爲參數的值傳遞給函數。以下所示:

當你想要建立一個函數,它須要能處理事先沒有定義過的參數,那麼就要用到前面提到的技巧了。


12 List comprehensions

List comprehensions(列表推導式)能夠說是我最喜歡的Python技巧之一。這種表達式可讓你寫出像天然語言同樣易於理解而且還很簡潔的代碼。


你能夠經過這個連接瞭解更多關於列表推導式的用法。地址:

www.learnpython.org/en/List_Com…


13 map

Python有許多很是有用的內置函數。其中一個就是map()——特別是和lambda函數相結合的時候。

在這個例子中,map()對x中的每個元素都應用了一個簡單的lambda函數。它會返回一個map對象,這個對象能夠被轉化成可迭代對象,如列表或者元組。


14 newspaper3k

newspaper3k,若是你尚未見過它,那麼你可能會被這個Python newspaper模塊所驚豔到。

它可讓你檢索到一系列國際領先出版物中的新聞和相關的元數據。你能夠檢索圖片、文本和做者名。它甚至有一些內置的天然語言處理功能。因此,若是你正在考慮使用BeautifulSoup 或其餘自制的爬蟲庫來應用於你的下一個項目。那麼,省省時間和精力吧,你其實只須要$ pip install newspaper3k。


15 Operator overloading(操做符重載)

Python支持操做符重載。「操做符重載」實際上是個簡單的概念,你是否曾經想過爲何Python可讓你使用「+」操做符來同時實現加法和鏈接字符串?這就是操做符重載在發揮做用。

你能夠定義使用Python標準操做符符號的對象,這可讓你在特定的環境中使用特定的對象,就像下方的例子同樣。


16 pprint

Python的默認print函數能夠知足平常的輸出任務,但若是要打印更大的、嵌套式的對象,那麼使用默認的print函數打印出來的內容會很醜陋。


這個時候咱們就須要pprint了,它可讓複雜的結構型對象以可讀性更強的格式顯示。這對於常常要面對非普通數據結構的Python開發者來講是必不可少的工具。


17 Queue(隊列)

Python支持多線程,它是經過標準庫中的Queue模塊來實現的。這個模塊可讓你實現隊列數據結構。這種數據結構可讓你根據特定的規則添加和檢索條目。


「先進先出」(FIFO)隊列可讓你按照添加對象的順序來檢索他們。「後進先出」(LIFO)隊列可讓你首先訪問最近添加的對象。最後,優先隊列可讓你根據他們排序的順序進行檢索。


18 repr

當你定義一個類的時候,提供一個方法能夠返回用來表示該類對象的可打印字符串會很是有用。例如:


這使得debug更加方便,具體的定義方式以下:


19 sh

sh庫讓你像調用方法那樣調用系統中的命令。


20 Type hints(類型提示)

Python是一種動態類型語言。當你定義變量、函數、類別的時候,你不須要指定數據的類型。這能夠大大提高你的開發速度,但也是有代價的。你可能會由於一個簡單的輸入問題而致使運行出錯。


在Python3.5以後,這就不是問題了,在定義函數的時候你能夠自主選擇要不要提供類型提示。

你還能夠定義類型的別名:
雖然不是強制性的,類型註釋可讓你的代碼理解起來更加簡單。它們也容許你使用類型檢測工具在運行以前捕獲這些零散的類型錯誤。若是你正在從事大型、複雜的項目,那麼類型註釋也許會很是有幫助


21 uuid

經過Python標準庫中的uuid模塊,能夠快速並簡單地生成統一的惟一ID(又稱UUID).

UUID是128位的全局惟一標識符,一般由32字節的字符串表示。它能夠保證時間和空間的惟一性,也稱爲GUID,全稱爲:UUID —— Universally Unique IDentifier,Python 中叫 UUID。它經過MAC地址、時間戳、命名空間、隨機數、僞隨機數來保證生成ID的惟一性。


22 Virtual environments

這多是我最喜歡的Python技巧了。你可能常常要處理不止一個Python項目,不幸的是,有時候不一樣項目會依賴不一樣的Python版本。這個時候,你應該在系統裏安裝哪一個Python版本呢?


幸運的是,Python能夠支持創建不一樣的虛擬環境來知足不一樣的版本需求。

如今你能夠在一臺機器上安裝和運行各個獨立版本的Python。太棒了!


23 wikipedia

Wikipedia有一個很棒的API,它可讓用戶經過編程訪問到維基的詞條內容。使用Python中的wikipedia模塊可讓你以最便捷的方式訪問該API。

與真實站點同樣,該模塊支持多種語言、頁面消除歧義、隨機頁面檢索,甚至還有donate()方法。


24 xkcd(著名Python漫畫)

幽默是Python語言的一個重要特性——畢竟,它是以英國喜劇小品節目《Monty Python’s Flying Circus》(《蒙提·派森的飛行馬戲團》)命名的。Python的許多官方文檔都引用了該劇中的著名情節。


這種幽默感不只在文檔中能夠找到,不信,你能夠試試運行下方的代碼:

你將打開蘭道爾·門羅的著名幽默漫畫《xkcd》:)


25 YAML

YAML是「YAML不是一種標記語言」的外語縮寫。它是一個數據格式語言,是JSON的父集。和JSON不一樣的是,它能夠存儲更復雜的對象,而且能夠引用自身的元素。你還能夠寫註釋,這讓YAML特別適合於書寫配置文件。


PyYAML模塊可讓你使用Python調用YAML。使用下列語句安裝:

而後導入到項目中:
PyYAML 使你可以儲存任何數據類型的Python對象,以及任何用戶定義類的實例。


26 zip

最後一個技巧也很是酷。你是否曾想要讓兩個列表中的元素逐個映射,組合成字典?那麼你應該使用zip。

內置函數zip()接收若干可迭代對象,而後返回一個由多個元組組成的列表。每一個元組根據輸入對象的位置索引對其元素進行分組。還可使用*zip()來「解壓」對象。


以上就是我想要呈現的全部Python技巧,感謝閱讀,但願你們能從中找到對本身有幫助的技巧。

推薦書籍:

精通Python天然語言處理

Python編程:從入門到實踐

貝葉斯思惟:統計建模的PYTHON學習法

相關文章
相關標籤/搜索