博客專欄

EEPW首頁 > 博客 > 日常python培訓函數總結及示例詳解

日常python培訓函數總結及示例詳解

發(fā)布人:only1 時間:2020-09-10 來源:工程師 發(fā)布文章

今天扣丁學堂給大家來介紹一下關于日常python培訓函數總結及示例,下面我們一起來看一下吧。  

常用內置函數:(不用import就可以直接使用)  

help(obj)在線幫助,obj可是任何類型  

callable(obj)查看一個obj是不是可以像函數一樣調用  

repr(obj)得到obj的表示字符串,可以利用這個字符串eval重建該對象的一個拷貝  

eval_r(str)表示合法的python表達式,返回這個表達式  

dir(obj)查看obj的namespace中可見的name  

hasattr(obj,name)查看一個obj的namespace中是否有name  

getattr(obj,name)得到一個obj的namespace中的一個name  

setattr(obj,name,value)為一個obj的namespace中的一個name指向vale這個object  

delattr(obj,name)從obj的namespace中刪除一個name  

vars(obj)返回一個object的namespace。用dictionary表示  

locals()返回一個局部namespace,用dictionary表示  

globals()返回一個全局namespace,用dictionary表示  

type(obj)查看一個obj的類型  

isinstance(obj,cls)查看obj是不是cls的instance  

issubclass(subcls,supcls)查看subcls是不是supcls的子類  

類型轉換函數  

chr(i)把一個ASCII數值,變成字符  

ord(i)把一個字符或者unicode字符,變成ASCII數值  

oct(x)把整數x變成八進制表示的字符串  

hex(x)把整數x變成十六進制表示的字符串  

str(obj)得到obj的字符串描述  

list(seq)把一個sequence轉換成一個list  

tuple(seq)把一個sequence轉換成一個tuple  

dict(),dict(list)轉換成一個dictionary  

int(x)轉換成一個integer  

long(x)轉換成一個longinterger  

float(x)轉換成一個浮點數  

complex(x)轉換成復數  

max(...)求最大值  

min(...)求最小值  

用于執(zhí)行程序的內置函數  

complie如果一段代碼經常要使用,那么先編譯,再運行會更快。  

2.和操作系統(tǒng)相關的調用  

系統(tǒng)相關的信息模塊importsys  

sys.argv是一個list,包含所有的命令行參數.  

sys.stdoutsys.stdinsys.stderr分別表示標準輸入輸出,錯誤輸出的文件對象.  

sys.stdin.readline()從標準輸入讀一行sys.stdout.write("a")屏幕輸出a  

sys.exit(exit_code)退出程序  

sys.modules是一個dictionary,表示系統(tǒng)中所有可用的module  

sys.platform得到運行的操作系統(tǒng)環(huán)境  

sys.path是一個list,指明所有查找module,package的路徑.  

操作系統(tǒng)相關的調用和操作importos  

os.environ一個dictionary包含環(huán)境變量的映射關系os.environ["HOME"]可以得到環(huán)境變量HOME的值  

os.chdir(dir)改變當前目錄os.chdir('d:\\outlook')注意windows下用到轉義  

os.getcwd()得到當前目錄  

os.getegid()得到有效組idos.getgid()得到組id  

os.getuid()得到用戶idos.geteuid()得到有效用戶id  

os.setegidos.setegid()os.seteuid()os.setuid()  

os.getgruops()得到用戶組名稱列表  

os.getlogin()得到用戶登錄名稱  

os.getenv得到環(huán)境變量  

os.putenv設置環(huán)境變量  

os.umask設置umask  

os.system(cmd)利用系統(tǒng)調用,運行cmd命令  

操作舉例:  

os.mkdir('/tmp/xx')os.system("echo'hello'>/tmp/xx/a.txt")os.listdir('/tmp/xx')  

os.rename('/tmp/xx/a.txt','/tmp/xx/b.txt')os.remove('/tmp/xx/b.txt')os.rmdir('/tmp/xx')  

用python編寫一個簡單的shell  

#!/usr/bin/python  

importos,sys  

cmd=sys.stdin.readline()  

whilecmd:  

os.system(cmd)  

cmd=sys.stdin.readline()  

用os.path編寫平臺無關的程序  

os.path.abspath("1.txt")==os.path.join(os.getcwd(),"1.txt")  

os.path.split(os.getcwd())用于分開一個目錄名稱中的目錄部分和文件名稱部分。  

os.path.join(os.getcwd(),os.pardir,'a','a.doc')全成路徑名稱.  

os.pardir表示當前平臺下上一級目錄的字符..  

os.path.getctime("/root/1.txt")返回1.txt的ctime(創(chuàng)建時間)時間戳  

os.path.exists(os.getcwd())判斷文件是否存在  

os.path.expanduser('~/dir')把~擴展成用戶根目錄  

os.path.expandvars('$PATH')擴展環(huán)境變量PATH  

os.path.isfile(os.getcwd())判斷是否是文件名,1是0否  

os.path.isdir('c:\Python26\temp')判斷是否是目錄,1是0否  

os.path.islink('/home/huaying/111.sql')是否是符號連接windows下不可用  

os.path.ismout(os.getcwd())是否是文件系統(tǒng)安裝點windows下不可用  

os.path.samefile(os.getcwd(),'/home/huaying')看看兩個文件名是不是指的是同一個文件  

os.path.walk('/home/huaying',test_fun,"a.c")  

遍歷/home/huaying下所有子目錄包括本目錄,對于每個目錄都會調用函數test_fun.  

例:在某個目錄中,和他所有的子目錄中查找名稱是a.c的文件或目錄。  

deftest_fun(filename,dirname,names)://filename即是walk中的a.cdirname是訪問的目錄名稱  

iffilenameinnames://names是一個list,包含dirname目錄下的所有內容  

printos.path.join(dirname,filename)  

os.path.walk('/home/huaying',test_fun,"a.c")  

文件操作  

打開文件  

f=open("filename","r")r只讀w寫rw讀寫rb讀二進制wb寫二進制w+寫追加  

讀寫文件  

f.write("a")f.write(str)寫一字符串f.writeline()f.readlines()與下read類同  

f.read()全讀出來f.read(size)表示從文件中讀取size個字符  

f.readline()讀一行,到文件結尾,返回空串.f.readlines()讀取全部,返回一個list.list每個元素表示一行,包含"\n"\  

f.tell()返回當前文件讀取位置  

f.seek(off,where)定位文件讀寫位置.off表示偏移量,正數向文件尾移動,負數表示向開頭移動。  

where為0表示從開始算起,1表示從當前位置算,2表示從結尾算.  

f.flush()刷新緩存  

關閉文件  

f.close()  

regularexpression正則表達式importre  

簡單的regexp  

p=re.compile("abc")ifp.match("abc"):print"match"  

上例中首先生成一個pattern(模式),如果和某個字符串匹配,就返回一個matchobject  

除某些特殊字符metacharacter元字符,大多數字符都和自身匹配。  

這些特殊字符是。^$*+?{[]\|()  

字符集合(用[]表示)  

列出字符,如[abc]表示匹配a或b或c,大多數metacharacter在[]中只表示和本身匹配。例:  

a=".^$*+?{\\|()"大多數metachar在[]中都和本身匹配,但"^[]\"不同  

p=re.compile("["+a+"]")  

foriina:  

ifp.match(i):  

print"[%s]ismatch"%i  

else:  

print"[%s]isnotmatch"%i  

在[]中包含[]本身,表示"["或者"]"匹配.用\[和\]表示.  

^出現(xiàn)在[]的開頭,表示取反.[^abc]表示除了a,b,c之外的所有字符。^沒有出現(xiàn)在開頭,即于身身匹配。  

-可表示范圍.[a-zA-Z]匹配任何一個英文字母。[0-9]匹配任何數字。  

\在[]中的妙用。  

\d[0-9]  

\D[^0-9]  

\s[\t\n\r\f\v]  

\S[^\t\n\r\f\v]  

\w[a-zA-Z0-9_]  

\W[^a-zA-Z0-9_]  

\t表示和tab匹配,其他的都和字符串的表示法一致  

\x20表示和十六進制ascii0x20匹配  

有了\,可以在[]中表示任何字符。注:單獨的一個"."如果沒有出現(xiàn)[]中,表示出了換行\(zhòng)n以外的匹配任何字符,類似[^\n].  

regexp的重復  

{m,n}表示出現(xiàn)m個以上(含m個),n個以下(含n個).如ab{1,3}c和abc,abbc,abbbc匹配,不會與ac,abbbc匹配。  

m是下界,n是上界。m省略表下界是0,n省略,表上界無限大。  

*表示{,}+表示{1,}?表示{0,1}  

最大匹配和最小匹配python都是最大匹配,如果要最小匹配,在*,+,?,{m,n}后面加一個?.  

matchobject的end可以得到匹配的最后一個字符的位置。  

re.compile("a*").match('aaaa').end()4最大匹配  

re.compile("a*?").match('aaaa').end()0最小匹配  

使用原始字符串  

字符串表示方法中用\\表示字符\.大量使用影響可讀性。  

解決方法:在字符串前面加一個r表示raw格式。  

a=r"\a"printa結果是\a  

a=r"\"a"printa結果是\"a  

使用re模塊  

先用re.compile得到一個RegexObject表示一個regexp  

后用pattern的match,search的方法,得到MatchObject  

再用matchobject得到匹配的位置,匹配的字符串等信息  

RegxObject常用函數:  

>>>re.compile("a").match("abab")如果abab的開頭和re.compile("a")匹配,得到MatchObject  

<_sre.SRE_Matchobjectat0x81d43c8>  

>>>printre.compile("a").match("bbab")  

None注:從str的開頭開始匹配  

>>>re.compile("a").search("abab")在abab中搜索第一個和re_obj匹配的部分  

<_sre.SRE_Matchobjectat0x81d43c8>  

>>>printre.compile("a").search("bbab")  

<_sre.SRE_Matchobjectat0x8184e18>和match()不同,不必從開頭匹配  

re_obj.findall(str)返回str中搜索所有和re_obj匹配的部分.  

返回一個tuple,其中元素是匹配的字符串.  

MatchObject的常用函數  

m.start()返回起始位置,m.end()返回結束位置(不包含該位置的字符).  

m.span()返回一個tuple表示(m.start(),m.end())  

m.pos(),m.endpos(),m.re(),m.string()  

m.re().search(m.string(),m.pos(),m.endpos())會得到m本身  

m.finditer()可以返回一個iterator,用來遍歷所有找到的MatchObject.  

forminre.compile("[ab]").finditer("tatbxaxb"):  

printm.span()  

高級regexp  

|表示聯(lián)合多個regexp.AB兩個regexp,A|B表示和A匹配或者跟B匹配.  

^表示只匹配一行的開始行首,^只有在開頭才有此特殊意義。  

$表示只匹配一行的結尾  

\A表示只匹配第一行字符串的開頭^匹配每一行的行首  

\Z表示只匹配行一行字符串的結尾$匹配第一行的行尾  

\b只匹配詞的邊界例:\binfo\b只會匹配"info"不會匹配information  

\B表示匹配非單詞邊界  

示例如下:  

>>>printre.compile(r"\binfo\b").match("info")#使用raw格式\b表示單詞邊界  

<_sre.SRE_Matchobjectat0x817aa98>  

>>>printre.compile("\binfo\b").match("info")#沒有使用raw\b表示退格符號  

None  

>>>printre.compile("\binfo\b").match("\binfo\b")  

<_sre.SRE_Matchobjectat0x8174948>  

分組(Group)示例:re.compile("(a(b)c)d").match("abcd").groups()('abc','b')  

#!/usr/local/bin/python  

importre  

x="""  

name:Charles  

Address:BUPT  

name:Ann  

Address:BUPT  

"""  

#p=re.compile(r"^name:(.*)\n^Address:(.*)\n",re.M)  

p=re.compile(r"^name:(?P.*)\n^Address:(?P  

.*)\n",re.M)  

forminp.finditer(x):  

printm.span()  

print"hereisyourfriendslist"  

print"%s,%s"%m.groups()  

CompileFlag  

用re.compile得到RegxObject時,可以有一些flag用來調整RegxObject的詳細特征.  

DOTALL,S讓.匹配任意字符,包括換行符\n  

IGNORECASE,I忽略大小寫  

LOCALES,L讓\w\W\b\B和當前的locale一致  

MULTILINE,M多行模式,只影響^和$(參見上例)  

VERBOSE,Xverbose模式  

以上就是關于Python常用函數總結及介紹,最后想要學好Python開發(fā)技術高薪就業(yè)的小伙伴就選擇扣丁學堂進行學習吧,扣丁學堂不僅有專業(yè)的老師和與時俱進的課程體系,還有大量的Python視頻教程供學員觀看學習,選擇扣丁學堂助你輕松高薪就業(yè)??鄱W堂Python技術交流群:816572891。

*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。

隔離器相關文章:隔離器原理


關鍵詞:

相關推薦

技術專區(qū)

關閉