ejecutar desde python string format string-formatting

desde - ¿Cuál es la diferencia entre! R y% r en Python?



ejecutar r desde python (1)

%r no es un marcador de posición válido en las operaciones de formato de str.format() ; solo funciona en formato de cadena % estilo antiguo . De hecho, convierte el objeto a una representación a través de la función repr() .

En str.format() !r es el equivalente, pero esto también significa que ahora puede usar todos los códigos de formato para una cadena. Normalmente, str.format() llamará al método object.__format__() en el mismo objeto, pero al usar !r , repr(object).__format__() se usa en su lugar.

También están los convertidores !s y (en Python 3) !a ; estos aplican las funciones str() y ascii() primero.

El 0 al frente indica qué argumento del método str.format() se usará para llenar ese espacio; El argumento posicional 0 es "Hello" en tu caso. También puede usar argumentos con nombre y pasar objetos como argumentos de palabras clave:

"{greeting!r:20}".format(greeting="Hello")

A menos que esté utilizando Python 2.6, puede omitir esto ya que las ranuras sin índices o nombres se numeran automáticamente; el primero {} es 0 , el segundo {} toma el segundo argumento en el índice 1 , etc.

Como lo indica el título, ¿cuál es la diferencia entre estas dos banderas? Parece que ambos convierten el valor en una cadena usando repr ()? Además, en esta línea de código:

"{0!r:20}".format("Hello")

¿Qué hace el 0 frente a la! R?