8個超好用內(nèi)置函數(shù)set(),eval(),sorted(),reversed(),map(),reduce(),filter(),enumerate()
“專業(yè)、務實、高效、創(chuàng)新、把客戶的事當成自己的事”是我們每一個人一直以來堅持追求的企業(yè)文化。 成都創(chuàng)新互聯(lián)是您可以信賴的網(wǎng)站建設服務商、專業(yè)的互聯(lián)網(wǎng)服務提供商! 專注于成都做網(wǎng)站、網(wǎng)站設計、軟件開發(fā)、設計服務業(yè)務。我們始終堅持以客戶需求為導向,結合用戶體驗與視覺傳達,提供有針對性的項目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場,引領市場!
python中有許多內(nèi)置函數(shù),不像print那么廣為人知,但它們卻異常的強大,用好了可以大大提高代碼效率。
這次來梳理下8個好用的python內(nèi)置函數(shù)
1、set()
當需要對一個列表進行去重操作的時候,set()函數(shù)就派上用場了。
用于創(chuàng)建一個集合,集合里的元素是無序且不重復的。集合對象創(chuàng)建后,還能使用并集、交集、差集功能。
2、eval()之前有人問如何用python寫一個四則運算器,輸入字符串公式,直接產(chǎn)生結果。用eval()來做就很簡單:eval(str_expression)作用是將字符串轉換成表達式,并且執(zhí)行。
3、sorted()在處理數(shù)據(jù)過程中,我們經(jīng)常會用到排序操作,比如將列表、字典、元組里面的元素正/倒排序。這時候就需要用到sorted() ,它可以對任何可迭代對象進行排序,并返回列表。對列表升序操作:
對元組倒序操作:
使用參數(shù):key,根據(jù)自定義規(guī)則,按字符串長度來排序:
根據(jù)自定義規(guī)則,對元組構成的列表進行排序:
4、reversed()如果需要對序列的元素進行反轉操作,reversed()函數(shù)能幫到你。reversed()接受一個序列,將序列里的元素反轉,并最終返回迭代器。
5、map()做文本處理的時候,假如要對序列里的每個單詞進行大寫轉化操作。這個時候就可以使用map()函數(shù)。
map()會根據(jù)提供的函數(shù),對指定的序列做映射,最終返回迭代器。也就是說map()函數(shù)會把序列里的每一個元素用指定的方法加工一遍,最終返回給你加工好的序列。舉個例子,對列表里的每個數(shù)字作平方處理:
6、reduce()前面說到對列表里的每個數(shù)字作平方處理,用map()函數(shù)。那我想將列表里的每個元素相乘,該怎么做呢?這時候用到reduce()函數(shù)。
reduce()會對參數(shù)序列中元素進行累積。第一、第二個元素先進行函數(shù)操作,生成的結果再和第三個元素進行函數(shù)操作,以此類推,最終生成所有元素累積運算的結果。再舉個例子,將字母連接成字符串。
你可能已經(jīng)注意到,reduce()函數(shù)在python3里已經(jīng)不再是內(nèi)置函數(shù),而是遷移到了functools模塊中。這里把reduce()函數(shù)拎出來講,是因為它太重要了。
7、filter()一些數(shù)字組成的列表,要把其中偶數(shù)去掉,該怎么做呢?
filter()函數(shù)輕松完成了任務,它用于過濾序列,過濾掉不符合條件的元素,返回一個迭代器對象。filter()函數(shù)和map()、reduce()函數(shù)類似,都是將序列里的每個元素映射到函數(shù),最終返回結果。我們再試試,如何從許多單詞里挑出包含字母w的單詞。
8、enumerate()這樣一個場景,同時打印出序列里每一個元素和它對應的順序號,我們用enumerate()函數(shù)做做看。
enumerate翻譯過來是枚舉、列舉的意思,所以說enumerate()函數(shù)用于對序列里的元素進行順序標注,返回(元素、索引)組成的迭代器。再舉個例子說明,對字符串進行標注,返回每個字母和其索引。
通過關鍵字def來創(chuàng)建函數(shù),def的作用是實現(xiàn)python中函數(shù)的創(chuàng)建
函數(shù)定義過程:
函數(shù)名+()小括號執(zhí)行函數(shù)
函數(shù)體內(nèi)對全局變量只能讀取,不能修改
局部變量,無法在函數(shù)體外使用
python 使用 lambda 來創(chuàng)建匿名函數(shù)。
所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函數(shù)。
1.1 模塊和包概念
Python程序由模塊組成。一個模塊對應 python源文件,一般后綴名是:.py。
模塊由語句組成。運行 Python 程序時,按照模塊中語句的順序依次執(zhí)行。
語句是Python程序的構造單元,用于創(chuàng)建對象、變量賦值、調(diào)用函數(shù)、控制語句等。
1.2 標準庫模塊(standard library)
與函數(shù)類似,模塊也分為標準庫模塊和用戶自定義模塊。 Python標準庫提供了操作系統(tǒng)功能、網(wǎng)絡通信、文本處理、文件處理、數(shù)學運算等基 本的功能。比如: random(隨機數(shù))、math(數(shù)學運算)、 time(時間處理)、 file(文件處理)、 os(和操作系統(tǒng)交互)、sys(和解釋器交互)等。
另外,Python還提供了海量的第三方模塊,使用方式和標準庫類似。功能覆蓋了能想象到的所有領域,比如:科學計算、WEB開發(fā)、大數(shù)據(jù)、人工智能、圖形系統(tǒng)等。
1.3 為什么需要模塊化編程
模塊(module)對應于Python源代碼文件(.py文件)。模塊中可以定義變量、函數(shù)、 類、普通語句。 這樣,我們可以將一個 Python程序分解成多個模塊,便于后期的重 復應用。
模塊化編程(Modular Programming)將一個任務分解成多個模塊。每個模塊就像一個積木一樣,便于后期的反復使用、反復搭建。
模塊化編程有如下幾個重要優(yōu)勢:
便于將一個任務分解成多個模塊,實現(xiàn)團隊協(xié)同開發(fā),完成大規(guī)模程序
實現(xiàn)代碼復用。一個模塊實現(xiàn)后,可以被反復調(diào)用。
可維護性增強。
1.4 模塊化編程的流程
模塊化編程的一般流程:
設計API,進行功能描述。
編碼實現(xiàn)API中描述的功能。
在模塊中編寫測試代碼,并消除全局代碼。
使用私有函數(shù)實現(xiàn)不被外部客戶端調(diào)用的模塊函數(shù)。
1.5 模塊的API和功能描述要點
API(Application Programming Interface 應用程序編程接口)是用于描述模 塊中提供的函數(shù)和類的功能描述和使用方式描述。
模塊化編程中,首先設計的就是模塊的API(即要實現(xiàn)的功能描述),然后開始編 碼實現(xiàn)API中描述的功能。最后,在其他模塊中導入本模塊進行調(diào)用。
通過help(模塊名)查看模塊的API。 一般使用時先導入模塊 然后通過help函數(shù)查看。
你理解錯了,*args說明可以傳遞可變個位置參數(shù)。而**keyargs才是可以傳遞可變個關鍵字參數(shù)的語法。而最后的那個sep="/"是默認參數(shù),如果不傳遞就會使用默認值。
還有一種情況就是,使從某個位置以后的所有參數(shù)都為關鍵字參數(shù),這可以使用*來實現(xiàn),如:
##縮進格式看圖
def f(a,b,*,c,d):
print(a,b,c,d)
#這樣可以
f(1,2,c=3,d=4)
#這樣不行,c、d,
#只能用關鍵字參數(shù)來傳遞
f(1,2,3,4)
限python限制其他軟件使用時長:運行一個需要1秒才能完成的函數(shù),超時設置為2秒:No timeout
如果我們運行time.sleep(10)并將超時設置為兩秒:finished = call_timeout(2, time.sleep, args=(10, ))
結果:Timeout