<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comentarios en: Sustitución de cadenas vs concatenación en Python</title>
	<atom:link href="http://www.pablasso.com/2009/05/21/sustitucion-de-cadenas-vs-concatenacion-en-python/feed" rel="self" type="application/rss+xml" />
	<link>http://www.pablasso.com/2009/05/21/sustitucion-de-cadenas-vs-concatenacion-en-python</link>
	<description>Sobre desarrollo de software y ñoñadas</description>
	<lastBuildDate>Sat, 11 Feb 2012 02:01:28 +0300</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Por: izaac</title>
		<link>http://www.pablasso.com/2009/05/21/sustitucion-de-cadenas-vs-concatenacion-en-python#comment-48902</link>
		<dc:creator>izaac</dc:creator>
		<pubDate>Fri, 22 May 2009 20:55:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=1768#comment-48902</guid>
		<description>Si sobre todo como lo menciona kad el string formatting necesita hacer algunas comprobaciones antes de incluir el valor de la variable en la cadena, aunque los placeholders no se incluyen hasta python 2.6+, versiones anteriores si necesitan comprobar si hay mapping keys, conversion flags, etc y luego realizar alguna conversión de ser necesario.

La concatenación en cambio solo llega a a utilizar algunos métodos como __add__, __radd__, __str__, __unicode__ 

Pero vaya! muy bien que vayas interesandote en las entrañas de Python.</description>
		<content:encoded><![CDATA[<p>Si sobre todo como lo menciona kad el string formatting necesita hacer algunas comprobaciones antes de incluir el valor de la variable en la cadena, aunque los placeholders no se incluyen hasta python 2.6+, versiones anteriores si necesitan comprobar si hay mapping keys, conversion flags, etc y luego realizar alguna conversión de ser necesario.</p>
<p>La concatenación en cambio solo llega a a utilizar algunos métodos como __add__, __radd__, __str__, __unicode__ </p>
<p>Pero vaya! muy bien que vayas interesandote en las entrañas de Python.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: pablasso</title>
		<link>http://www.pablasso.com/2009/05/21/sustitucion-de-cadenas-vs-concatenacion-en-python#comment-48899</link>
		<dc:creator>pablasso</dc:creator>
		<pubDate>Fri, 22 May 2009 20:13:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=1768#comment-48899</guid>
		<description>Muy cierto, a pesar de que los estoy comparando para lograr el mismo objetivo, trabajan de forma muy diferente. Gracias por la explicación.</description>
		<content:encoded><![CDATA[<p>Muy cierto, a pesar de que los estoy comparando para lograr el mismo objetivo, trabajan de forma muy diferente. Gracias por la explicación.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: kad</title>
		<link>http://www.pablasso.com/2009/05/21/sustitucion-de-cadenas-vs-concatenacion-en-python#comment-48895</link>
		<dc:creator>kad</dc:creator>
		<pubDate>Fri, 22 May 2009 18:15:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=1768#comment-48895</guid>
		<description>&lt;pre lang=&quot;python&quot; line=&quot;1&quot;&gt;
s1 = &#039;Esta es la&#039;
s2 = &#039;iteracion #&#039;
final = &#039;&#039;

for i in xrange(0, 1000000):
  final = s1 + &#039; &#039; + s2 + str(i)
  #final = &quot;%s %s%s&quot; % (s1, s2, str(i))
print final
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="python">s1 = <span style="color: #483d8b;">'Esta es la'</span>
s2 = <span style="color: #483d8b;">'iteracion #'</span>
final = <span style="color: #483d8b;">''</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">1000000</span><span style="color: black;">&#41;</span>:
  final = s1 + <span style="color: #483d8b;">' '</span> + s2 + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span>
  <span style="color: #808080; font-style: italic;">#final = &quot;%s %s%s&quot; % (s1, s2, str(i))</span>
<span style="color: #ff7700;font-weight:bold;">print</span> final</pre></td></tr></table></div>

]]></content:encoded>
	</item>
	<item>
		<title>Por: kad</title>
		<link>http://www.pablasso.com/2009/05/21/sustitucion-de-cadenas-vs-concatenacion-en-python#comment-48893</link>
		<dc:creator>kad</dc:creator>
		<pubDate>Fri, 22 May 2009 18:11:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=1768#comment-48893</guid>
		<description>Estas comparando peras con manzanas... o no, mas bien estas comparando el peso de manzanas con corazón y manzanas sin corazón. Me explico: en el primer ejemplo de concatenación estas declarando una sola vez a la variable FINAL, y solo le estas concatenando lo demás (para verlo, solo imprime la variable FINAL despues de los ciclos en ambos casos). La diferencia es que la variable FINAL esta siendo reescrita en el segundo caso, entonces python esta haciendo: borrar variable FINAL + crear espacio para variable FINAL + asignar valor para variable FINAL (a grosso modo, tampoco no se mucho de compiladores), mientras que en la concatenación que usas solamente hace 1 operación: concatenar. Cambia el primer ejemplo, quitale el += del principio y verás que los tiempos se acercan bastante uno y otro (creo que la concatenación sigue estando 1 o 2 centésimas de segundo más rápida).

Otra cosa, el método de sustitución y el de concatenación son intrínsicamente distintos: la sustitución carga primero la cadena, luego busca los placeholders y luego los reemplaza, mientras que la concatenación simplemente los va agregando sin saber que son (de ahi que tengas que hacer un str(i) antes de concatenar, te daria un error de runtime de otra manera, creo)

Creo que despues de todo si estabas comparando manzanas con peras, porque los mecanismos son diferentes.</description>
		<content:encoded><![CDATA[<p>Estas comparando peras con manzanas&#8230; o no, mas bien estas comparando el peso de manzanas con corazón y manzanas sin corazón. Me explico: en el primer ejemplo de concatenación estas declarando una sola vez a la variable FINAL, y solo le estas concatenando lo demás (para verlo, solo imprime la variable FINAL despues de los ciclos en ambos casos). La diferencia es que la variable FINAL esta siendo reescrita en el segundo caso, entonces python esta haciendo: borrar variable FINAL + crear espacio para variable FINAL + asignar valor para variable FINAL (a grosso modo, tampoco no se mucho de compiladores), mientras que en la concatenación que usas solamente hace 1 operación: concatenar. Cambia el primer ejemplo, quitale el += del principio y verás que los tiempos se acercan bastante uno y otro (creo que la concatenación sigue estando 1 o 2 centésimas de segundo más rápida).</p>
<p>Otra cosa, el método de sustitución y el de concatenación son intrínsicamente distintos: la sustitución carga primero la cadena, luego busca los placeholders y luego los reemplaza, mientras que la concatenación simplemente los va agregando sin saber que son (de ahi que tengas que hacer un str(i) antes de concatenar, te daria un error de runtime de otra manera, creo)</p>
<p>Creo que despues de todo si estabas comparando manzanas con peras, porque los mecanismos son diferentes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: zodman</title>
		<link>http://www.pablasso.com/2009/05/21/sustitucion-de-cadenas-vs-concatenacion-en-python#comment-48887</link>
		<dc:creator>zodman</dc:creator>
		<pubDate>Fri, 22 May 2009 14:42:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.pablasso.com/?p=1768#comment-48887</guid>
		<description>&lt;pre lang=&quot;python&quot;&gt;
for i in xrange(0, 10000):
	FINAL = &#039;%s %s%s %d\n&#039; % (FINAL, STRING1, STRING2, i)
&lt;/pre&gt;

Segun &quot;entiendo yo&quot; la variables FINAL se localiza en espacio de memoria y si la vuelves a asignar tiene que separar un espacio de memoria mas grande para asignar el nuevo FINAL

&lt;pre lang=&quot;python&quot;&gt;
FINAL += &#039;%s%s %d\n&#039; % (STRING1, STRING2, i)
&lt;/pre&gt;

Con esto veo que FINAL no tiene que hasta cierto punto a redifinirse en memoria si no mas bien contatenarse. el espacio de memoria ya esta definido mas lo que le hace falta contatenar.

Segun yo asi chambea esta cosa ....... pero python a bajo nivel de seleccion de memoria no se a ciencia cierta.</description>
		<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="python"><span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">10000</span><span style="color: black;">&#41;</span>:
	FINAL = <span style="color: #483d8b;">'%s %s%s %d<span style="color: #000099; font-weight: bold;">\n</span>'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>FINAL, STRING1, STRING2, i<span style="color: black;">&#41;</span></pre></div></div>

<p>Segun &#8220;entiendo yo&#8221; la variables FINAL se localiza en espacio de memoria y si la vuelves a asignar tiene que separar un espacio de memoria mas grande para asignar el nuevo FINAL</p>

<div class="wp_syntax"><div class="code"><pre class="python">FINAL += <span style="color: #483d8b;">'%s%s %d<span style="color: #000099; font-weight: bold;">\n</span>'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>STRING1, STRING2, i<span style="color: black;">&#41;</span></pre></div></div>

<p>Con esto veo que FINAL no tiene que hasta cierto punto a redifinirse en memoria si no mas bien contatenarse. el espacio de memoria ya esta definido mas lo que le hace falta contatenar.</p>
<p>Segun yo asi chambea esta cosa &#8230;&#8230;. pero python a bajo nivel de seleccion de memoria no se a ciencia cierta.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

