2018年11月22日 星期四

精選22個​Python​實用技巧,秀技能必備這份技術列表!




文章摘要: 被人工智慧捧紅的 Python 已是一種發展完善且非常多樣化的語言,其中肯定有一些你尚未發現的功能。那麼今天或許我能夠讓你學到一些新技巧。


被人工智慧捧紅的 Python 已是一種發展完善且非常多樣化的語言,其中肯定有一些你尚未發現的功能。那麼今天或許我能夠讓你學到一些新技巧。



Python的發展:


「人生苦短,我用 Python」,Python 的經典 slogan 講究爭分奪秒,自 20 世紀 90 年代初首次錄入 TIOBE,Python 花了 10 年才首次進入指數前 10 名,隨著它的不斷應用與發展,Python 逐漸在網路安全與資料科學等領域大放異彩。


Python 最初是 Perl 的繼承者,用於編寫構建指令碼,並且作為一種膠水語言,它被廣泛用於連線各種軟體元件。但隨著不斷應用與發展,Python 逐漸進入了其它領域,比如網路安全與資料科學。如今,在大型嵌入式系統中執行 Python 也變得非常普遍,並且隨著人工智慧與資料分析等領域的大熱,Python 也得到了前所未有的高度關注,相信它也會保持向前。



目前在全球範圍內它已經是大學的首選程式語言,同時也征服了工業界。越來越多人使用 Python,反映在 TIOBE 指數上就是它穩紮穩打地一步步向上爬,從前 10 到前 5,如今終於進入了前 3。


Python的必備技巧:


1、簡潔的表示式



點評:Python因為簡潔高效而出名,就是因為語法非常簡單,而且內建了很多強大的數據結構:


比如我們可以大量用推導列表來生成很多簡潔的程式碼


比如我們可以用if else組合,本來需要2-3行程式碼寫的,一行搞定!


2、排序


忽略想起了一句臺詞,「有人的地方就有江湖」,那麼有陣列這樣的數據結構一定涉及到排序,取最大值,取最小值。



點評:這個heapq庫非常好用,尤其是我們在取一些列表的頭部資料,比如最大幾個,最小几個經常用到,很實用的一招!啥也不說了,趕緊背下來!


3、查詢


排序和查詢都是好基友,長的數據結構裏面(字典,列表)裏面我們一定會有查詢,過濾的需求。有的時候,我們需要從一個很長的列表裏面,找到某一個或者某一類的元素,怎麼辦,很簡單,用高階函式filter :


1).用lambda配合filter過濾



點評:lambda是一個非常簡潔的函式表達方式,短小精悍,加上配合filter一起使用,非常漂亮。比如我們通過 字串裡的startswith內建函式,非常方便的過濾出列表裏面我們需要的資料!(Python3稍微改一下再filter之外再加一個list,不然生成的是迭代器地址)



點評:正則是一個非常不錯的過濾方法,有的時候好的正則頂的上幾十行程式碼,精通正則對玩資料分析,資料清洗是必需的技能!



4、碾平list


有的時候我們會遇到複雜的數據結構,比如列表裏面套列表,層層巢狀,非常麻煩。可以碾平的方法:


傳統方法



點評:這裏面就是用遞迴來解決的,思路非常簡單清晰,但是遞迴一定要有出口,設計的時候要注意。


另外還有兩種高手的寫法,理解起來比較複雜,這裏就不過多說明,感興趣的可以找一找。


5、帶條件的推導列表


推導列表應該是我最喜歡的一種Pythonic方式,它的演變有很多手法,這幾種都是非常常見的,多讀幾遍,背下來!



6、漂亮的新增字典的方法


設計數據結構的時候,字典是必須的!很多時候我們會用帶下面的字典更新的方法,當然更好的是collections模組裏面的defaultdict!



點評:dict.update還是比較平易近人的,這個dict(dict,**options)用法我第一次看到的時候也是楞了一些,什麼鬼,現在見多了,也就習慣了!


Python的精選技巧:


1、all 或 any


Python 如此受歡迎,原因之一是因為它具有可讀性和可表達性。


人們經常開玩笑說 Python 是「可執行的虛擬碼」,但是當你可以這樣編寫程式碼時,你就很難反駁了。



2、bashplotlib


你想在控制檯(console)上繪製圖形嗎?


1$ pip install bashplotlib


這樣你在控制檯中就可以繪製圖形了。



3、集合


Python 內建預設的資料型別,但有時它們的使用效果會不盡如人意。


幸運的是,Python 的標準庫提供了 collections 模組,這個方便的附加庫提供了更多的資料型別。


from collections import OrderedDict, Counter


x = OrderedDict(a=1, b=2, c=3)


y = Counter(“Hello World!”)


4、dir


你是否曾經有過深入 Python 物件內部並且觀察它具備哪些屬性的想法呢?


輸入下述命令列:


以互動式執行 Python 時,這是一個非常實用的特徵,並且可以動態地搜尋正在使用的物件和模組。


5、emoji


Python 包含 emoji 模組,在這裏!


$ pip install emoji


別以為我不知道你會偷偷下載…


6、原地交換兩個數字


Python 提供了一個直觀的在一行程式碼中賦值與交換(變數值)的方法,請參見下面的示例:


x,y= 10,20print(x,y)x,y= y,xprint(x,y)#1 (10, 20)#2 (20, 10)


賦值的右側形成了一個新的元組,左側立即解析(unpack)那個(未被引用的)元組到變數和 。


一旦賦值完成,新的元組變成了未被引用狀態並且被標記為可被垃圾回收,最終也完成了變數的交換。


7、from _future_import


Python 流行的一個結果是新版本總是在開發中。新版本意味著新功能——除非版本已經過時


不過別擔心。_future_module 允許使用者通過函式匯入新版本 Python 的功能。這就像是時間旅行,或是奇異魔法之類……


from __future__ import print_function


print(“Hello World!”)


為什麼不匯入花括號呢?


8、geopy


地理(Geography)對於程式設計師來說可能是一個具有挑戰性的領域。但是 geopy 模組讓它變得異常簡單。


$ pip install geopy


它通過抽取一系列不同地理編碼服務的 API 來工作,使使用者獲取一個地方的完整街道地址、緯度、經度,甚至海拔高度。


另外一個有用的功能是距離:它可以用你喜歡的度量單位計算出兩個位置之間的距離。



9、鏈狀比較操作符



比較操作符的聚合是另一個有時很方便的技巧:


n= 10result= 1 n

10、howdoi


受困於程式設計問題並且不記得之前看到過的解決方法?使用者需要使用 StackOverflow ,但是不想離開終端?


那麼需要使用這個非常使用的命令列工具 howdoi


$ pip install howdoi


無論你有什麼問題,它都會幫你解答。


但是請注意,它會從 StackOverflow 的最高票答案中抓取程式碼,這意味著它的回答並不總是最有用的。


$ howdoi exit vim


11、inspect


Python 的 inspects 模組對於理解背後的原理是非常有幫助的。使用者甚至可以在 inspect 模組上呼叫其方法!


下述程式碼示例使用


inspect.getsource


來列印它的原始碼。同時它也使用


inspect.getmodule


來列印定義它的模組。


最後一行程式碼列印出自身的行號。


當然,除去這些簡單的用途之外,inspect 模組對於理解程式碼的作用也非常有用。你也可以使用它來寫自編文件程式碼。


12、互動環境下的 「_」 操作符


這是一個我們大多數人不知道的有用特性,在 Python 控制檯,不論何時我們測試一個表示式或者呼叫一個方法,結果都會分配給一個臨時變數: _(一個下劃線)。


>>> 2+ 13>>> _3>>> print_3


13、List Comprehensions


關於 Python 程式設計,我最喜歡的事情之一是它的列表生成式(List Comprehensions),


這些表示式可以很容易編寫出簡潔的程式碼,讀起來幾乎就像自然語言一樣。



14、Jedi


Jedi 庫是一個自動完成和程式碼分析的庫。它能夠使編寫程式碼更為快速、更為高效。


除非你正在開發自己的 IDE,否則你可能對使用 Jedi 作為編輯器外掛最感興趣。幸運的是,現在載入這個外掛已經可以用了!不過,你可能已經用上Jedi 了。IPython 專案的程式碼自動完成功能就是使用Jedi來實現的。


15、map



Python 通過許多內建功能支援函數語言程式設計。map 函式是最有用的函式之一——特別是當它與 lambda 函式結合使用時。


在上面的例子中,map 將一個簡單的 lambda 函式應用於 x 中的每個元素。它返回一個 map 物件,該物件可以被轉換成可迭代的物件,如列表或元組。


16、**kwargs


在學習任何語言的過程中,都會遇到許多里程碑。使用Python,理解神祕的 **kwargs 語法可能就是其中之一。


dictionary 物件前面的雙星號允許您將該 dictionary 的內容作為命名引數傳遞給函式。


dictionary 的鍵是引數名,值是傳遞給函式的值。你甚至不需要叫它 kwargs!



當你想編寫可以處理未預先定義的命名引數的函式時,這就非常有用了。


總結:


Python的小技巧還有很多,上面只是介紹了其中的一部分,入門容易精通難!在進階的路上,有沒有什麼好的技巧和好的方法,就是不斷總結,不斷記筆記!尤其是好的用法,就像寫作文一樣,好的名言警句要多背誦一些,寫作的時候,肚子裡的墨水多了才能才思泉湧,寫出更多的好程式碼。





http://www.kubonews.com/2018112237949.html

每日即時更新新聞,請上:http://www.kubonews.com

沒有留言:

張貼留言