獲取這個簡單的Python代碼,與re.compile實例相同。 我注意到即使我使用的是相同的值,它會創建兩個實例,並相應地重複它們。python以這種方式處理locals()的原因是什麼(成對)?
我不知道如果一看就知道了這種現象的原因,
- 爲什麼它在所有創建的第二個實例?
- 爲什麼只有兩個?
- 爲什麼每次選擇另一個而不是隨機?
的CLI代碼:
>>> import re
>>>
>>> rec = re.compile("(?:[-a-z0-9]+\.)+[a-z]{2,6}(?:\s|$)")
>>>
>>> rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb238>
>>> rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
>>> rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb238>
>>> rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
>>> rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb238>
>>> rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
編輯:
由於@kimvaisanswered,原因在保持最新的賦值_
規定。 請參閱,如果您不分配,而是打印,則始終是相同的。
>>> print rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
>>> print rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
>>> print rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
>>> print rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
>>> print rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
>>> print rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
正是我想要建議的。 +1。嘗試將這些命令放入腳本並運行該腳本;那麼分配器實際上會重用這個地址(至少在我的Linux機器上)。 – 2012-02-06 12:58:23
*聽起來像是正確的答案,我會在將此答案標記爲**正確的**之前等待更多參考。 – 2012-02-06 13:00:41