in

python – ¿Qué hacen exactamente los indicadores de cadena «u» y «r», y qué son los literales de cadena sin formato?

apple touch icon@2

Realmente no hay ningún «crudo cuerda«; hay crudos literales de cadena, que son exactamente los literales de cadena marcados por un 'r' antes de la cotización de apertura.

Un «literal de cadena sin formato» es una sintaxis ligeramente diferente para un literal de cadena, en el que una barra invertida, , se considera que significa «solo una barra invertida» (excepto cuando viene justo antes de una cita que de otra manera terminaría el literal) – no hay «secuencias de escape» para representar nuevas líneas, pestañas, retrocesos, alimentaciones de formularios, etc. En los literales de cadena normales, cada barra invertida debe duplicarse para evitar que se tome como el inicio de una secuencia de escape.

Esta variante de sintaxis existe principalmente porque la sintaxis de los patrones de expresión regular tiene muchas barras invertidas (pero nunca al final, por lo que la cláusula «excepto» anterior no importa) y se ve un poco mejor cuando evita duplicar cada una de ellas. – eso es todo. También ganó algo de popularidad para expresar rutas de archivos nativas de Windows (con barras invertidas en lugar de barras regulares como en otras plataformas), pero eso rara vez se necesita (ya que las barras normales también funcionan bien en Windows) e imperfecto (debido a la cláusula «excepto» encima).

r'...' es una cadena de bytes (en Python 2. *), ur'...' es una cadena Unicode (nuevamente, en Python 2. *), y cualquiera de los otros tres tipos de citas también produce exactamente los mismos tipos de cadenas (por ejemplo, r'...', r'''...''', r"...", r"""...""" son todas cadenas de bytes, etc.).

No estoy seguro de lo que quieres decir con «ir espalda«- no hay direcciones intrínsecamente hacia atrás y hacia adelante, porque no hay una cadena sin procesar escribe, es solo una sintaxis alternativa para expresar objetos de cadena perfectamente normales, byte o Unicode como pueden ser.

Y sí, en Python 2. *, u'...' es por supuesto siempre distinto de solo '...' – el primero es una cadena Unicode, el segundo es una cadena de bytes. En qué codificación se podría expresar el literal es una cuestión completamente ortogonal.

Por ejemplo, considere (Python 2.6):

>>> sys.getsizeof('ciao')
28
>>> sys.getsizeof(u'ciao')
34

El objeto Unicode, por supuesto, ocupa más espacio en la memoria (una diferencia muy pequeña para una cadena muy corta, obviamente ;-).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

solidity

Tutorial de solidez

ff91895553e85b3c52d7ec778f64b699 1200 80

Cada Poke Ball, ¿los has lanzado todos?