本篇文章給大家分享的是有關(guān)22個Python實(shí)用技巧分別是什么,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)香格里拉免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
被人工智能捧紅的 Python 已是一種發(fā)展完善且非常多樣化的語言,其中肯定有一些你尚未發(fā)現(xiàn)的功能。那么今天或許我能夠讓你學(xué)到一些新技巧。
Python的發(fā)展:
“人生苦短,我用 Python”,Python 的經(jīng)典 slogan 講究爭分奪秒,自 20 世紀(jì) 90 年代初首次錄入 TIOBE,Python 花了 10 年才首次進(jìn)入指數(shù)前 10 名,隨著它的不斷應(yīng)用與發(fā)展,Python 逐漸在網(wǎng)絡(luò)安全與數(shù)據(jù)科學(xué)等領(lǐng)域大放異彩。
Python 最初是 Perl 的繼承者,用于編寫構(gòu)建腳本,并且作為一種膠水語言,它被廣泛用于連接各種軟件組件。但隨著不斷應(yīng)用與發(fā)展,Python 逐漸進(jìn)入了其它領(lǐng)域,比如網(wǎng)絡(luò)安全與數(shù)據(jù)科學(xué)。如今,在大型嵌入式系統(tǒng)中運(yùn)行 Python 也變得非常普遍,并且隨著人工智能與數(shù)據(jù)分析等領(lǐng)域的大熱,Python 也得到了前所未有的高度關(guān)注,相信它也會保持向前。
目前在全球范圍內(nèi)它已經(jīng)是大學(xué)的首選編程語言,同時(shí)也征服了工業(yè)界。越來越多人使用 Python,反映在 TIOBE 指數(shù)上就是它穩(wěn)扎穩(wěn)打地一步步向上爬,從前 10 到前 5,如今終于進(jìn)入了前 3。
Python的必備技巧:
1、簡潔的表達(dá)式
點(diǎn)評:Python因?yàn)楹啙嵏咝Ф雒褪且驗(yàn)檎Z法非常簡單,而且內(nèi)置了很多強(qiáng)大的數(shù)據(jù)結(jié)構(gòu):
比如我們可以大量用推導(dǎo)列表來生成很多簡潔的代碼
比如我們可以用if else組合,本來需要2-3行代碼寫的,一行搞定!
2、排序
忽略想起了一句臺詞,“有人的地方就有江湖”,那么有數(shù)組這樣的數(shù)據(jù)結(jié)構(gòu)一定涉及到排序,取最大值,取最小值。
點(diǎn)評:這個heapq庫非常好用,尤其是我們在取一些列表的頭部數(shù)據(jù),比如最大幾個,最小幾個經(jīng)常用到,很實(shí)用的一招!啥也不說了,趕緊背下來!
3、查詢
排序和查詢都是好基友,長的數(shù)據(jù)結(jié)構(gòu)里面(字典,列表)里面我們一定會有查詢,過濾的需求。有的時(shí)候,我們需要從一個很長的列表里面,找到某一個或者某一類的元素,怎么辦,很簡單,用高級函數(shù)filter :
1).用lambda配合filter過濾
點(diǎn)評:lambda是一個非常簡潔的函數(shù)表達(dá)方式,短小精悍,加上配合filter一起使用,非常漂亮。比如我們通過 字符串里的startswith內(nèi)置函數(shù),非常方便的過濾出列表里面我們需要的數(shù)據(jù)!(Python3稍微改一下再filter之外再加一個list,不然生成的是迭代器地址)
點(diǎn)評:正則是一個非常不錯的過濾方法,有的時(shí)候好的正則頂?shù)纳蠋资写a,精通正則對玩數(shù)據(jù)分析,數(shù)據(jù)清洗是必需的技能!
4、碾平list
有的時(shí)候我們會遇到復(fù)雜的數(shù)據(jù)結(jié)構(gòu),比如列表里面套列表,層層嵌套,非常麻煩。可以碾平的方法:
傳統(tǒng)方法
點(diǎn)評:這里面就是用遞歸來解決的,思路非常簡單清晰,但是遞歸一定要有出口,設(shè)計(jì)的時(shí)候要注意。
另外還有兩種高手的寫法,理解起來比較復(fù)雜,這里就不過多說明,感興趣的可以找一找。
5、帶條件的推導(dǎo)列表
推導(dǎo)列表應(yīng)該是我最喜歡的一種Pythonic方式,它的演變有很多手法,這幾種都是非常常見的,多讀幾遍,背下來!
6、漂亮的添加字典的方法
設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)的時(shí)候,字典是必須的!很多時(shí)候我們會用帶下面的字典更新的方法,當(dāng)然更好的是collections模塊里面的defaultdict!
點(diǎn)評:dict.update還是比較平易近人的,這個dict(dict,**options)用法我第一次看到的時(shí)候也是楞了一些,什么鬼,現(xiàn)在見多了,也就習(xí)慣了!
Python的精選技巧:
1、all 或 any
Python 如此受歡迎,原因之一是因?yàn)樗哂锌勺x性和可表達(dá)性。
人們經(jīng)常開玩笑說 Python 是“可執(zhí)行的偽代碼”,但是當(dāng)你可以這樣編寫代碼時(shí),你就很難反駁了。
2、bashplotlib
你想在控制臺(console)上繪制圖形嗎?
1$ pip install bashplotlib
這樣你在控制臺中就可以繪制圖形了。
3、集合
Python 內(nèi)置默認(rèn)的數(shù)據(jù)類型,但有時(shí)它們的使用效果會不盡如人意。
幸運(yùn)的是,Python 的標(biāo)準(zhǔn)庫提供了 collections 模塊,這個方便的附加庫提供了更多的數(shù)據(jù)類型。
from collections import OrderedDict, Counter
x = OrderedDict(a=1, b=2, c=3)
y = Counter("Hello World!")
4、dir
你是否曾經(jīng)有過深入 Python 對象內(nèi)部并且觀察它具備哪些屬性的想法呢?
輸入下述命令行:
以交互式運(yùn)行 Python 時(shí),這是一個非常實(shí)用的特征,并且可以動態(tài)地搜索正在使用的對象和模塊。
5、emoji
Python 包含 emoji 模塊,在這里!
$ pip install emoji
別以為我不知道你會偷偷下載...
6、原地交換兩個數(shù)字
Python 提供了一個直觀的在一行代碼中賦值與交換(變量值)的方法,請參見下面的示例:
x,y= 10,20print(x,y)x,y= y,xprint(x,y)#1 (10, 20)#2 (20, 10)
賦值的右側(cè)形成了一個新的元組,左側(cè)立即解析(unpack)那個(未被引用的)元組到變量和 。
一旦賦值完成,新的元組變成了未被引用狀態(tài)并且被標(biāo)記為可被垃圾回收,最終也完成了變量的交換。
7、from _future_import
Python 流行的一個結(jié)果是新版本總是在開發(fā)中。新版本意味著新功能——除非版本已經(jīng)過時(shí)
不過別擔(dān)心。_future_module 允許用戶通過函數(shù)導(dǎo)入新版本 Python 的功能。這就像是時(shí)間旅行,或是奇異魔法之類......
from __future__ import print_function
print("Hello World!")
為什么不導(dǎo)入花括號呢?
8、geopy
地理(Geography)對于程序員來說可能是一個具有挑戰(zhàn)性的領(lǐng)域。但是 geopy 模塊讓它變得異常簡單。
$ pip install geopy
它通過抽取一系列不同地理編碼服務(wù)的 API 來工作,使用戶獲取一個地方的完整街道地址、緯度、經(jīng)度,甚至海拔高度。
另外一個有用的功能是距離:它可以用你喜歡的度量單位計(jì)算出兩個位置之間的距離。
9、鏈狀比較操作符
比較操作符的聚合是另一個有時(shí)很方便的技巧:
n= 10result= 1< n< 20print(result)# Trueresult= 1> n<= 9print(result)# False
10、howdoi
受困于編程問題并且不記得之前看到過的解決方法?用戶需要使用 StackOverflow ,但是不想離開終端?
那么需要使用這個非常使用的命令行工具 howdoi
$ pip install howdoi
無論你有什么問題,它都會幫你解答。
但是請注意,它會從 StackOverflow 的最高票答案中抓取代碼,這意味著它的回答并不總是最有用的。
$ howdoi exit vim
11、inspect
Python 的 inspects 模塊對于理解背后的原理是非常有幫助的。用戶甚至可以在 inspect 模塊上調(diào)用其方法!
下述代碼示例使用
inspect.getsource()
來打印它的源代碼。同時(shí)它也使用
inspect.getmodule()
來打印定義它的模塊。
最后一行代碼打印出自身的行號。
當(dāng)然,除去這些簡單的用途之外,inspect 模塊對于理解代碼的作用也非常有用。你也可以使用它來寫自編文檔代碼。
12、交互環(huán)境下的 “_” 操作符
這是一個我們大多數(shù)人不知道的有用特性,在 Python 控制臺,不論何時(shí)我們測試一個表達(dá)式或者調(diào)用一個方法,結(jié)果都會分配給一個臨時(shí)變量: _(一個下劃線)。
>>> 2+ 13>>> _3>>> print_3
13、List Comprehensions
關(guān)于 Python 編程,我最喜歡的事情之一是它的列表生成式(List Comprehensions),
這些表達(dá)式可以很容易編寫出簡潔的代碼,讀起來幾乎就像自然語言一樣。
14、Jedi
Jedi 庫是一個自動完成和代碼分析的庫。它能夠使編寫代碼更為快速、更為高效。
除非你正在開發(fā)自己的 IDE,否則你可能對使用 Jedi 作為編輯器插件最感興趣。幸運(yùn)的是,現(xiàn)在加載這個插件已經(jīng)可以用了!不過,你可能已經(jīng)用上Jedi 了。IPython 項(xiàng)目的代碼自動完成功能就是使用Jedi來實(shí)現(xiàn)的。
15、map
Python 通過許多內(nèi)置功能支持函數(shù)式編程。map() 函數(shù)是最有用的函數(shù)之一——特別是當(dāng)它與 lambda 函數(shù)結(jié)合使用時(shí)。
在上面的例子中,map() 將一個簡單的 lambda 函數(shù)應(yīng)用于 x 中的每個元素。它返回一個 map 對象,該對象可以被轉(zhuǎn)換成可迭代的對象,如列表或元組。
16、**kwargs
在學(xué)習(xí)任何語言的過程中,都會遇到許多里程碑。使用Python,理解神秘的 **kwargs 語法可能就是其中之一。
dictionary 對象前面的雙星號允許您將該 dictionary 的內(nèi)容作為命名參數(shù)傳遞給函數(shù)。
dictionary 的鍵是參數(shù)名,值是傳遞給函數(shù)的值。你甚至不需要叫它 kwargs!
當(dāng)你想編寫可以處理未預(yù)先定義的命名參數(shù)的函數(shù)時(shí),這就非常有用了。
以上就是22個Python實(shí)用技巧分別是什么,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。