Obtenga este código simple de python, la misma coincidencia con la instancia de re.compile. Noté que aunque estoy usando el mismo valor, crea dos instancias y las repite en consecuencia.¿Cuál es la razón por la cual python maneja los locales() de esta manera (en pares)?
Me pregunto si se puede decir la razón de este comportamiento,
- ¿Por qué se crea la segunda instancia en absoluto?
- ¿Por qué solo dos?
- ¿Y por qué cada vez escogió la otra y no al azar?
el código de la 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>
Editar:
Como @kimvaisanswered, la razón reside en la _
que tiene la última asignación. , si no asigna, imprime, es la misma, todo el tiempo.
>>> 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>
Justo lo que estaba a punto de sugerir. +1. Intenta poner los comandos en un script y ejecutar eso; entonces el asignador realmente reutiliza la dirección (en mi caja Linux al menos). –
que * suena * como la respuesta correcta, esperaré algunas referencias más antes de marcar esta respuesta como la ** correcta **. –