[Python-es] StringIO vs string
Olemis Lang (Simelix)
olemis+py en gmail.com
Jue Abr 1 19:42:04 CEST 2010
2010/4/1 Antonio Fernandez Porrua <a.porrua en gmail.com>:
> Hola, tenía que convertir un long a un string, para ello iba a utilizar una
> función de pycrypto
> el meollo del asunto lo hace el siguiente código
> s = ''
> n = long(n)
> pack = struct.pack
> while n > 0:
> s = pack('>I', n & 0xffffffffL) + s
> n = n >> 32
> y he visto que suman strings, yo tenía entendido que los strings son
> inmutables, y que para añadir caracteres a un string hay que volver a
> asignar memoria y volver a copiarlo entero.
Así es cómo funcionan otros lenguajes de paradigmas anteriores (C, C++, ...) .
Pero, como Py es algo del futuro (muy modestamente hablando :P) ,
existe un garbage collector y no hay que preocuparse (tanto) por
asignar memoria explícitamente (y esto en sí es una debilidad que hace
que no se pueda utilizar el intérprete para e.g. sistemas en tiempo
real ) .
;o)
> Probé a hacer lo mismo con cStringIO.StringIO
> r=cStringIO.StringIO()
>
[...]
>
> ¿Alguién sabe a que se debe esto?
> ¿cúando se deben usar strings y cuando StringIO?
`StringIO` es un adapter (wrapper) para hacer compatibles las cadenas
de caracteres y los ficheros (e.g. redireccionar stdout, ...)
--
Regards,
Olemis.
Blog ES: http://simelo-es.blogspot.com/
Blog EN: http://simelo-en.blogspot.com/
Featured article:
Tutorial: Cómo crear enlaces directos en Windows con Python -
http://feedproxy.google.com/~r/simelo-es/~3/lF373i_fqYs/tutorial-como-crear-enlaces-directos-en.html
Más información sobre la lista de distribución Python-es