replace de cadena de caracteres
Chema Cortes
chemacortes en wanadoo.es
Mar Mayo 28 10:20:00 CEST 2002
> A modo de curiosidad os queria preguntar, por que la diferencia de poner:
> >>>a
> 'modo=simple'
>
> y
>
> >>> print a
> modo=simple
>
> es decir, porque uno me imprime las comillas y el otro no?
Voy a ver si te lo explico. Todo objeto tiene dos métodos que se emplean para su "salida" por pantalla: __str__ (conversión a string del objeto) y __repr__ ("representación" en texto del objeto).
Ambos métodos son invocados cuando usas las funciones str() y repr(). Suelen ser lo mismo en la mayoría de objetos, pero se deja abierta la puerta para que se diferencien, como en el caso siguiente:
>>> a=unicode("ñ","latin1")
>>> print str(a)
ñ
>>> print repr(a)
u'\xf1'
Aquí se ve claro que el str() "transforma" a string, mientras que el repr() intenta ser lo más fiel al original.
Aclarado esto, queda por decir que toda salida en el shell interactivo de python la realiza el método sys.displayhook(value), y que su definición depende de si lo estás usando desde el shell de linux, desde pythonwin, ó desde el idle. Cada cual tiene su propio displayhook, y es el que "añade" las comillas que tanto te mosqueaban.
Prueba lo siguente:
def mihook(value):
print value
import sys
sys.displayhook=mihook
Ahora verás como coinciden:
>>> a="Hola, mundo"
>>> print a
Hola, mundo
>>> a
Hola, mundo
La diferencia de las comillas es casi irrelevante. Suele dar mayores problemas con los números reales:
>>> 1-1e-15
0.999999999999999
>>> print 1-1e-15
1.0
Saludos,
--
Chema Cortes (chemacortes en wanadoo.es) |
LinuxUser#142755 - SuSE Linux 8.0
ZARALINUX http://www.zaralinux.org | La
ignorancia se apodera de quien
PYTANDO http://pytando.sf.net | se contenta con
lo que sabe
_____________________________________________________________________
No olvides nada. Recuerda los cumpleaños, tus citas, tus cenas románticas y
todo lo que quieras usando la Agenda personal de Wanadoo.es, desde cualquier
lugar conectado a Internet. Visítala en http://www.wanadoo.es/agenda
Más información sobre la lista de distribución Python-es