精選26個Python實用技巧,想秀技能先Get這份技術列表!

本文整理了 26 個 Python 有用的技巧,將按照首字母從 A~Z 的順序分享其中一些內容。
all 或 any
人們常常開玩笑說 Python 是「可執行的僞代碼」,可是當你能夠這樣編寫代碼時,你就很難反駁了。
1x = [True, True, False]
2if any(x):
3    print("At least one True")
4if all(x):
5    print("Not one False")
6if any(x) and not all(x):
7    print("At least one True and one False")複製代碼

bashplotlib

你想在控制檯(console)上繪製圖形嗎?
1$ pip install bashplotlib複製代碼
這樣你在控制檯中就能夠繪製圖形了。

python開發等相關IT技術羣: 887934385 提供資料,部分源碼 共同探討

collections 模塊

Python 有一些很好的默認數據類型,但有時它們的行爲並不徹底像你所指望的那樣。幸運的是,Python 標準庫提供了 collections 模塊,這個方便的附加組件提供了更多的數據類型。

dir

你是否知道如何查看 Python 對象並查看它都有哪些屬性?使用命令行:
當你經過交互方式來運行 Python,並動態地探索你正在使用的對象和模塊時,這一功能就很是有用了。

Emoji

如何打出 emoji 表情?
不要跟我說你不會去嘗試噢~
from __future__ import複製代碼
Python 如此廣受歡迎還有一個緣由是它老是開發新版本。要知道,新版本意味着有新功能。但你沒必要懼怕所用的版本過期了。這個__future__模塊可讓你在現有版本上導入 Python 將來版本的功能。這一特徵就好像時間旅行機同樣,讓將來的東西穿越到如今來使用。

geopy 模塊

對程序員來講,地理環境多是一個具備挑戰性的領域。可是,有了 geopy 模塊,這一切就都變得簡單了。
geopy 模塊是經過抽象出一系列不一樣的地理編碼服務的 API 來工做。它可讓你得到某一地點的完整街道地址、維度、精度甚至海拔高度。還有一個有用的距離類。它可使用你喜歡的測量單位來計算兩個位置之間的距離。

howdoi

你有沒有遇到過這樣的困境:遇到編碼的問題忘記了之前見過的解決方案,或者須要檢查 StackOverflow,但又不想離開終端。
有了 howdoi,不管你問它什麼問題,它都會盡力回答。
但有一點要注意的是:howdoi 是從 StackOverflow 的熱門答案中抓取代碼,它提供的信息可能不是最有用的。

inspect 模塊

PYthon 的 inspect 模塊對於理解幕後發生的事情很是有用。你甚至能夠本身調用它的方法!以下所示的代碼段,使用了 inspect.getsource() 來打印本身的源代碼。它還使用了 inspect.getsource() 來打印定義它的模塊。最後一行代碼打印出本身的行號。
固然,除去這些簡單的用途以外,inspect 模塊對於理解代碼的做用也很是有用。你也可使用它來寫自編文檔代碼。

Jedi

Jedi 庫是一個自動完成和代碼分析的庫。它可以使編寫代碼更爲快速、更爲高效。除非你正在開發本身的 IDE,不然你可能對使用 Jedi 做爲編輯器插件最感興趣。幸運的是,如今加載這個插件已經能夠用了!不過,你可能已經用上Jedi 了。IPython 項目的代碼自動完成功能就是使用Jedi來實現的。
**kwargs
在學習任何語言的過程當中,都會遇到許多里程碑。使用Python,理解神祕的 **kwargs 語法可能就是其中之一。dictionary 對象前面的雙星號容許您將該 dictionary 的內容做爲命名參數傳遞給函數。dictionary 的鍵是參數名,值是傳遞給函數的值。你甚至不須要叫它 kwargs!
當你想編寫能夠處理未預先定義的命名參數的函數時,這就很是有用了。

List Comprehensions

關於 Python 編程,我最喜歡的事情之一是它的列表生成式(List Comprehensions)。這些表達式能夠很容易編寫出簡潔的代碼,讀起來幾乎就像天然語言同樣。

map

Python 是經過許多內置功能支持函數式變成。其中最有用的函數之一是 map() 函數,特別是這個函數與 lambda 函數結合使用時。
在如上所示的代碼段中,map() 對每一個元素 x 都應用了一個簡單的 lambda 函數。它返回一個 map 對象,這個對象能夠轉換爲某些可迭代的對象,例如 listh 或 tuple。

newspaper3k 模塊

若是你還沒見過它,那你見到 Python 的 newspaper 模塊可不要被它震撼到了。這個模塊可讓你從一系列領先的國際出版物中檢索新聞文章和相關的元數據。你能夠檢索圖像、文本和做者姓名。若是你想爲你的項目使用 BeautifulSoup 或其餘一些本身打造的 webscraping 庫,你能夠用 $ pip install newspaper3k 爲你節省時間和精力。

Operator overloading

Python 提供了對運算符重載的支持。其實這是一個簡單的概念。有沒有想過爲何 Python 容許使用 + 運算符來添加數字和鏈接字符串?這就是運算符重載的功勞。你能夠按照本身的特定方式定義使用 Python 標準運算符符號的對象。這樣,你就能夠在正在使用的對象相關的上下文中使用它們。

pprint

Python 的默認 print 函數能夠完成打印做業。可是若是嘗試讓 Python 打印任何大型的嵌套對象,打印結果會很是難看。
這就要用到 Python 標準庫中的 pretty-print 模塊了。這個模塊可以以易於閱讀的格式打印出複雜的結構化對象。這個模塊對於任何使用複雜數據結構的 Python 開發者來講都是必備的。

Queue

Python 支持多線程,能夠經過標準庫的 Queue 模塊來實現。這個模塊可讓你實現隊列數據結構。這些數據結構容許你根據特定規則添加和檢索條目。「先進先出」(FIFO)隊列容許你按照添加對象的次序來檢索對象。「後進先出」(LIFO)隊列容許你首先訪問最近添加的對象。最後,優先級隊列容許你根據對象的排序次序來檢索對象。
repr
在 Python 中定義類或對象時,提供一種將該對象表示爲字符串的「官方」方法是頗有用的。例如:
這使得代碼的調試變得更加容易。將其添加到你的類定義中,以下所示:

sh

Python 是一種很棒的腳本語言,但有時候使用標準的操做系統和子進程庫會讓人有點頭疼。
sh 庫提供了一個簡潔的替代方法。sh 庫容許你像普通函數同樣調用任何程序,這點對於自動化工做流和任務很是有用,全部這些都來自 Python 內部。

Type hints

Python 是一種動態類型的語言。在定義變量、函數、類等時,不須要指定數據類型。
這一特性讓開發者可以快速開發項目。可是,不多有比簡單的輸入問題致使的運行時錯誤更煩人的事情了。
從 Python 3.5 開始,你就能夠選擇在定義函數時提供 type hintsl 。
你能夠這樣定義類型別名:
雖然定義類型別名不是強制性的,可是類型註釋可讓你的代碼更容易理解。
它們還容許你使用類型檢查工具在運行時以前捕獲那些零散的 TypeErrors。若是你正在開發大型複雜的項目,那麼這極可能是值得一試的!

uuid

經過 Python 標準庫的 uuid 模塊,能夠快速簡單地生成通用惟一 ID(或「uuid」)。
uuid 模塊會建立一個隨機的 128 位數字,幾乎能夠確定是惟一的。
實際上,能夠生成超過 2¹²² 個可能 UUID,這一數字超過了5,000,000,000,000,000,000,000,000,000,000,000,000(數字 5 後面有 36 個數字 0)。
在給定的集合中找到重複的機率很是低。即便有一萬億的 uuid,重複存在的機率也遠遠小於十億分之一。
用兩行代碼就實現了,仍是很不錯的。

Virtual environments

這多是 Python 中我最喜歡的部分了。
你有可能同時會處理多個 Python 項目。然而不幸的是,有時兩個項目會依賴於相同依賴關係的不一樣版本。你在系統上都安裝了哪些版本的依賴關係呢?在命令行輸入以下內容:
如今,你能夠在同一臺機器上安裝、運行Python不一樣的獨立版本。

wikipedia

Wikipedia 有一個很棒的 API,它容許用戶經過編程方式訪問無與倫比的、徹底免費的知識和信息。
wikipedia 模塊使訪問這個 API 變得很是方便。
與真實網站同樣,該模塊支持多種語言、頁面消歧、隨機頁面檢索,甚至還有 donate() 方法。

xkcd

幽默是 Python 語言的一個重要特徵——畢竟,它是以英國喜劇小品節目 Monty Python 的飛行馬戲團命名的。Python 的許多官方文檔都參考了該劇最著名的短劇。然而,這些幽默並不侷限於文檔,試一試下面的運行方式:
毫不改變,Python。永不改變。

YAML

YAML 表明的是「YAML Ain’t Markup Language」,它是一種數據格式化語言,是 JSON 的超集。與 JSON 不一樣,它能夠存儲更復雜的對象並引用本身的元素。你還能夠編寫註釋,使其特別適合於編寫配置文件。
PyYAML 模塊容許你在 Python 中使用 YAML。
而後導入到你的項目中:
PyYAML 容許你存儲任何數據類型的 Python 對象,以及任何用戶定義類的實例。

zip

這是本文最後的一個技巧了,很是酷!你有沒有過須要從兩個列表中建立一個字典的想法呢?
zip() 內置函數接受許多可迭代對象並返回元組列表。每一個元組根據對象的位置索引對其元素進行分組。
你還能夠經過調用 *zip() 來「解壓縮」對象。

python開發等相關IT技術羣: 887934385 提供資料,部分源碼 共同探討

不經常使用q能夠掃如下二維碼添加助理客服小姐姐微信,經過後第一時間回覆python

關注微信公衆號「 python社區營 」 第一時間學習更多知識程序員

相關文章
相關標籤/搜索