成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Python中為什么不要再用re.compile-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“Python中為什么不要再用re.compile”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Python中為什么不要再用re.compile”這篇文章吧。

站在用戶的角度思考問題,與客戶深入溝通,找到石臺(tái)網(wǎng)站設(shè)計(jì)與石臺(tái)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋石臺(tái)地區(qū)。

前言

如果大家在網(wǎng)上搜索Python 正則表達(dá)式,你將會(huì)看到大量的垃圾文章會(huì)這樣寫代碼:

import re

pattern = re.compile('正則表達(dá)式')
text = '一段字符串'
result = pattern.findall(text)

這些文章的作者,可能是被其他語言的壞習(xí)慣影響了,也可能是被其他垃圾文章誤導(dǎo)了,不假思索拿來就用。

在Python里面,真的不需要使用re.compile!

為了證明這一點(diǎn),我們來看Python的源代碼。

在PyCharm里面輸入:

import re

re.search

然后Windows用戶按住鍵盤上的Ctrl鍵,鼠標(biāo)左鍵點(diǎn)擊search,Mac用戶按住鍵盤上的Command鍵,鼠標(biāo)左鍵點(diǎn)擊search,PyCharm會(huì)自動(dòng)跳轉(zhuǎn)到Python的re模塊。在這里,你會(huì)看到我們常用的正則表達(dá)式方法,無論是findall還是search還是sub還是match,全部都是這樣寫的:

_compile(pattern, flag).對應(yīng)的方法(string)

例如:

def findall(pattern, string, flags=0):
 """Return a list of all non-overlapping matches in the string.

 If one or more capturing groups are present in the pattern, return
 a list of groups; this will be a list of tuples if the pattern
 has more than one group.

 Empty matches are included in the result."""
 return _compile(pattern, flags).findall(string)

如下圖所示:

Python中為什么不要再用re.compile

然后我們再來看compile:

def compile(pattern, flags=0):
 "Compile a regular expression pattern, returning a Pattern object."
 return _compile(pattern, flags)

如下圖所示:

Python中為什么不要再用re.compile

看出問題來了嗎?

我們常用的正則表達(dá)式方法,都已經(jīng)自帶了compile了!

根本沒有必要多此一舉先re.compile再調(diào)用正則表達(dá)式方法。

此時(shí),可能會(huì)有人反駁:

如果我有一百萬條字符串,使用使用某一個(gè)正則表達(dá)式去匹配,那么我可以這樣寫代碼:

texts = [包含一百萬個(gè)字符串的列表]
pattern = re.compile('正則表達(dá)式')
for text in texts:
 pattern.search(text)

這個(gè)時(shí)候,re.compile只執(zhí)行了1次,而如果你像下面這樣寫代碼:

texts = [包含一百萬個(gè)字符串的列表]
for text in texts:
 re.search('正則表達(dá)式', text)

相當(dāng)于你在底層對同一個(gè)正則表達(dá)式執(zhí)行了100萬次re.compile。

Talk is cheap, show me the code.

我們來看源代碼,正則表達(dá)式re.compile調(diào)用的是_compile,我們就去看_compile的源代碼,如下圖所示:

紅框中的代碼,說明了_compile自帶緩存。它會(huì)自動(dòng)儲(chǔ)存最多512條由type(pattern), pattern, flags)組成的Key,只要是同一個(gè)正則表達(dá)式,同一個(gè)flag,那么調(diào)用兩次_compile時(shí),第二次會(huì)直接讀取緩存。

綜上所述,請你不要再手動(dòng)調(diào)用re.compile了,這是從其他語言(對的,我說的就是Java)帶過來的陋習(xí)。

以上是“Python中為什么不要再用re.compile”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁題目:Python中為什么不要再用re.compile-創(chuàng)新互聯(lián)
分享地址:http://jinyejixie.com/article44/gpche.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站品牌網(wǎng)站設(shè)計(jì)、虛擬主機(jī)、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
任丘市| 宣汉县| 万宁市| 滦平县| 安徽省| 东丰县| 桃源县| 句容市| 静乐县| 石泉县| 会理县| 东乡县| 安国市| 固始县| 台中县| 黄石市| 永寿县| 淮滨县| 个旧市| 通化县| 启东市| 大新县| 灵寿县| 洞头县| 吉首市| 栾城县| 乌拉特后旗| 丹棱县| 延边| 常熟市| 万安县| 清镇市| 临夏市| 龙胜| 西宁市| 福海县| 康马县| 噶尔县| 内乡县| 北票市| 察雅县|