获取这个简单的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