欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python中請不要再用re.compile了

系統 1783 0

前言

如果大家在網上搜索Python 正則表達式,你將會看到大量的垃圾文章會這樣寫代碼:

            
import re

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

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

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

為了證明這一點,我們來看Python的源代碼。

在PyCharm里面輸入:

            
import re

re.search
          

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

            
_compile(pattern, flag).對應的方法(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了_第1張圖片

然后我們再來看compile:

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

如下圖所示:

Python中請不要再用re.compile了_第2張圖片

看出問題來了嗎?

我們常用的正則表達式方法,都已經自帶了compile了!

根本沒有必要多此一舉先re.compile再調用正則表達式方法。

此時,可能會有人反駁:

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

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

這個時候,re.compile只執行了1次,而如果你像下面這樣寫代碼:

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

相當于你在底層對同一個正則表達式執行了100萬次re.compile。

Talk is cheap, show me the code.

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

紅框中的代碼,說明了_compile自帶緩存。它會自動儲存最多512條由type(pattern), pattern, flags)組成的Key,只要是同一個正則表達式,同一個flag,那么調用兩次_compile時,第二次會直接讀取緩存。

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精热 | 欧美欧美欧美 | 欧洲免费在线视频 | 日韩一区电影 | 天天操天天操天天操香蕉 | 国产亚洲女人久久久久久 | 久久久人 | 亚洲欧美另类日韩 | 免费观看性欧美大片无片 | 成人精品国产 | 亚洲一二三区在线观看 | 欧美亚洲 尤物久久 综合精品 | hdbbwsexvideo| 91蜜芽尤物福利在线观看 | 夜夜夜操操操 | 人阁色第四影院在线电影 | 精品无码国产一区二区日本 | 国产精品1区 | 杏美月av| 不卡国产一区二区三区四区 | 91在线免费观看网站 | 欧美三极 | 亚洲日本高清成人aⅴ片 | 99久久精品国产亚洲 | 狠狠操网| 婷婷资源 | 91大神精品长腿在线观看网站 | 亚洲精品九九 | 久综合色 | 无遮挡啪啪成人免费网站 | 瑟瑟视频在线 | 欧美激情免费在线 | 国产电影精品 | 国产大片免费观看中文字幕 | 欧美日韩国产一区二区三区播放 | 一级毛片视频播放 | 亚洲精品视频免费观看 | 色宅男看片午夜大片免费看 | 日韩av免费看 | 在线精品国内外视频 | 免费看一区二区三区 |