http://learnpythonthehardway.org/book/ex6.html

Zed parece usar %r y %s indistintamente aquí, ¿hay alguna diferencia entre los dos? Por qué no usar simplemente %s todo el tiempo?

También, yo no estaba seguro de qué buscar en la documentación para encontrar más información sobre esto. ¿Cuáles son %r y %s llama exactamente? Cadenas de formato?

InformationsquelleAutor some1 | 2012-01-24

7 Comentarios

  1. 62

    Se llaman el formato de cadena de operaciones.

    La diferencia entre el %s y %r es que %s utiliza el str función y %r utiliza la repr función. Usted puede leer acerca de las diferencias entre str y repr en esta respuesta, pero para tipos integrados, la mayor diferencia en la práctica es que repr para las cadenas incluye citas y todos los caracteres especiales se escapó.

  2. 21

    %r llamadas repr, mientras que %s llamadas str. Estos pueden comportarse de manera diferente para algunos tipos, pero no para otros: repr devuelve «la posibilidad de imprimir la representación de un objeto», mientras que str devuelve «un bien imprimible de la representación de un objeto». Por ejemplo, son diferentes para las cadenas:

    >>> s = "spam"
    >>> print(repr(s))
    'spam'
    >>> print(str(s))
    spam

    En este caso, el repr es la representación literal de una cadena (que el intérprete de Python puede analizar en un str objeto), mientras que el str es sólo el contenido de la cadena.

  3. 3

    El siguiente es un resumen de los anteriores tres ejemplos de código.

    # First Example
    s = 'spam'
    # "repr" returns a printable representation of an object,
    # which means the quote marks will also be printed.
    print(repr(s))
    # 'spam'
    # "str" returns a nicely printable representation of an
    # object, which means the quote marks are not included.
    print(str(s))
    # spam
    
    # Second Example.
    x = "example"
    print ("My %r" %x)
    # My 'example'
    # Note that the original double quotes now appear as single quotes.
    print ("My %s" %x)
    # My example
    
    # Third Example.
    x = 'xxx'
    withR = ("Prints with quotes: %r" %x)
    withS = ("Prints without quotes: %s" %x)
    print(withR)
    # Prints with quotes: 'xxx'
    print(withS)
    # Prints without quotes: xxx
  4. 0
     x = "example"
     print "My %s"%x
    
           My example
    
     print "My %r"%x
    
           My 'example'

    Que está muy bien explicado en las respuestas anteriores. He tratado de mostrar la misma con un simple ejemplo.

  5. 0

    %s => string

    %r => exactamente como es

    Utilizando el código en el libro:

    my_name = 'Zed A. Shaw'
    print "Let's talk about %s." % my_name
    print "Let's talk about %r." % my_name

    tenemos

    Let's talk about Zed A. Shaw.
    Let's talk about 'Zed A. Shaw'.
  6. -2

    El código siguiente ilustra la diferencia. Mismo valor se imprime de forma diferente:

    x = "xxx"
    withR = "prints with quotes %r"
    withS = "prints without quotes %s"

Dejar respuesta

Please enter your comment!
Please enter your name here