gpt4 book ai didi

python - python 以这种方式(成对)处理 locals() 的原因是什么?

转载 作者:太空狗 更新时间:2023-10-30 00:46:25 26 4
gpt4 key购买 nike

得到这个简单的python代码,和re.compile实例一样匹配。我注意到,即使我使用的是完全相同的值,它也会创建两个实例,并相应地重复它们。

我想知道是否有人可以说出这种行为的原因,

  • 为什么要创建第二个实例?
  • 为什么只有两个?
  • 为什么每次都选择另一个而不是随机选择?

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>

编辑:

作为@kimvais answered ,原因在于保存最新分配的 _ 。看,如果您不分配,而是打印,它始终是同一个。

>>> 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>

最佳答案

我的猜测是这与 return value being assigned 有关在交互式 python shell 内部下划线 ( _ ) - 即自 _ 以来指向 <_sre.SRE_Match object at 0x23cb238> '直到下一个rec.match_ 之前,相同的本地无法重复使用。指向其他地方,旧的可以回收。

关于python - python 以这种方式(成对)处理 locals() 的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9160367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com