第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否值得使用Python的re.編譯?

是否值得使用Python的re.編譯?

桃花長相依 2019-08-03 03:03:50
是否值得使用Python的re.編譯?在Python中使用用于正則表達(dá)式的編譯有什么好處嗎?h = re.compile('hello')h.match('hello world')VSre.match('hello', 'hello world')
查看完整描述

3 回答

?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個贊

對我來說,最大的好處是re.compile能夠?qū)⒄齽t表達(dá)式的定義與它的使用分開。

甚至一個簡單的表達(dá)式,比如0|[1-9][0-9]*(基數(shù)10中沒有前導(dǎo)零的整數(shù))可能足夠復(fù)雜,因此您寧愿不必重新鍵入它,檢查是否輸入了任何類型,然后在開始調(diào)試時必須重新檢查是否有排字。另外,使用變量名(如num或num_b10)比使用變量名要好得多0|[1-9][0-9]*.

當(dāng)然可以存儲字符串并將它們傳遞給re.Match;但是,這是較少可讀性:

num = "..."# then, much later:m = re.match(num, input)

相對于匯編:

num = re.compile("...")# then, much later:m = num.match(input)

雖然它是相當(dāng)接近,第二行感覺更自然和簡單的重復(fù)使用。




查看完整回答
反對 回復(fù) 2019-08-05
?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個贊

FWIW:

$ python -m timeit -s "import re" "re.match('hello', 'hello world')"100000 loops, best of 3: 3.82 usec per loop

$ python -m timeit -s "import re; h=re.compile('hello')" "h.match('hello world')"1000000 loops, best of 3: 1.26 usec per loop

所以,如果要使用很多事,也許值得去做re.compile(特別是對于更復(fù)雜的正則表達(dá)式)。

反對過早優(yōu)化的標(biāo)準(zhǔn)論點(diǎn)是適用的,但我認(rèn)為您不會因?yàn)槭褂?/trans>re.compile如果您懷疑您的regexp可能成為性能瓶頸。

最新情況:

在Python3.6(我懷疑上面的時間是使用Python2.x完成的)和2018硬件(MacBookPro)下,我現(xiàn)在得到了以下時間:

% python -m timeit -s "import re" "re.match('hello', 'hello world')"1000000 loops, best of 3: 
0.661 usec per loop% python -m timeit -s "import re; h=re.compile('hello')" "h.match('hello world')"1000000 loops, best of 3:
 0.285 usec per loop% python -m timeit -s "import re" "h=re.compile('hello'); h.match('hello world')"1000000 loops, best of 3:
  0.65 usec per loop% python --versionPython 3.6.5 :: Anaconda, Inc.

我還添加了一個大小寫(注意前兩次運(yùn)行之間的引號差異),它表明re.match(x, ...)從字面上[大致]相當(dāng)于re.compile(x).match(...)也就是說,編譯后表示的幕后緩存似乎不會發(fā)生。




查看完整回答
反對 回復(fù) 2019-08-05
  • 3 回答
  • 0 關(guān)注
  • 369 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號