使用了這么多年P(guān)ython,我在上次的行業(yè)交流會上了解到一些非常有用的功能和特性,可能很少人有了解和使用過這些功能。考慮到這一點(diǎn),我在此篇文章會分享和總結(jié)一些你應(yīng)該了解的Python功能特色,希望能夠在工作上幫助到大家。好了廢話不多說,我總結(jié)了一下七種功能特性一一告訴大家。
1.帶任意數(shù)量參數(shù)的函數(shù)
大家知道Python可以允許你定義可選參數(shù)。但還存在一個方法,可以定義函數(shù)任意數(shù)量的參數(shù)。
下面是定義可選參數(shù)的例子:
現(xiàn)在,讓我們看看怎么定義一個可以接受任意參數(shù)的函數(shù)。我們利用元組來實(shí)現(xiàn)。
這里補(bǔ)充一句:更一般的函數(shù)定義方式是def fun(*args,**kwargs),可以在許多Python源碼中發(fā)現(xiàn)這種定義,其中*args表示任何多個無名參數(shù),它本質(zhì)是一個元組tuple;**kwargs表示關(guān)鍵字參數(shù),它本質(zhì)上是一個字典dict。
2.使用Glob()查找文件
大多Python函數(shù)有著長且具有描述性的名字。但是命名為glob()的函數(shù)你可能不知道它是干什么的除非你從別處已經(jīng)熟悉它了。
它像是一個更強(qiáng)大版本的listdir()函數(shù)。它可以讓你通過使用模式匹配來搜索文件。
你可以像下面這樣查找多個文件類型:
如果你想得到每個文件的絕對路徑,你可以在返回值上調(diào)用realpath()函數(shù):
3.調(diào)試
下面的例子使用inspect模塊。該模塊用于調(diào)試目的時是非常有用的,它的功能遠(yuǎn)比這里描述的要多。
這篇文章不會覆蓋這個模塊的每個細(xì)節(jié),但會展示給你一些用例。
4.生成唯一ID
在有些情況下你需要生成一個唯一的字符串。我看到很多人使用md5()函數(shù)來達(dá)到此目的,但它確實(shí)不是以此為目的。
其實(shí)有一個名為uuid()的Python函數(shù)是用于這個目的的。
你可能會注意到,即使字符串是唯一的,但它們后邊的幾個字符看起來很相似。這是因為生成的字符串與電腦的mac地址是相聯(lián)系的。
為了減少重復(fù)的情況,你可以使用這兩個函數(shù)。
5.序列化
你曾經(jīng)需要將一個復(fù)雜的變量存儲在數(shù)據(jù)庫或文本文件中吧?你不需要想一個奇特的方法將數(shù)組或?qū)ο蟾褶D(zhuǎn)化為式化字符串,因為Python已經(jīng)提供了此功能。
這樣更緊湊,而且最重要的是與JAVAScript和許多其他語言兼容。然而對于復(fù)雜的對象,其中的一些信息可能丟失。
6.壓縮字符
當(dāng)談起壓縮時我們通常想到文件,比如ZIP結(jié)構(gòu)。在Python中也可以壓縮長字符:
7.注冊Shutdown函數(shù)
有可模塊叫atexit,它可以讓你在腳本運(yùn)行完后立馬執(zhí)行一些代碼。
假如你想在腳本執(zhí)行結(jié)束時測量一些基準(zhǔn)數(shù)據(jù),比如運(yùn)行了多長時間:
打眼其實(shí)很簡單。只需要將代碼添加到腳本的最底層,它將在腳本結(jié)束前運(yùn)行。但如果腳本中有一個致命錯誤或者腳本被用戶終止,它可能就無法運(yùn)行了。當(dāng)你使用atexit.register()時,你的代碼都將執(zhí)行,不論腳本因為什么原因停止運(yùn)行。
結(jié)尾:不知道python這些特性功能能否幫到大家,如果大家喜歡這篇文章點(diǎn)贊關(guān)注評論轉(zhuǎn)發(fā)一條龍走起。