¿Hay alguna diferencia entre "cadena" y "cadena" en Python? [duplicar]
-
02-07-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
- Comillas simples vs. comillas dobles en Python [cerrado] 19 respuestas
En PHP, una cadena incluida entre " comillas dobles " se analizarán las variables que se reemplazarán, mientras que una cadena encerrada entre 'comillas simples' no. En Python, ¿esto también se aplica?
Solución
No :
2.4.1. Literales de cadena y bytes
... En inglés simple: ambos tipos de literales pueden incluirse entre comillas simples (
'
) o comillas dobles ("
). También se pueden encerrar en grupos coincidentes de tres comillas simples o dobles (generalmente se les conoce como cadenas de comillas triples). El carácter de barra invertida (\
) se usa para escapar de los caracteres que, de lo contrario, tienen un significado especial, como nueva línea, barra diagonal inversa o el carácter de comillas ...
Otros consejos
Python es uno de los pocos idiomas (?) donde 'y " Tienen funcionalidad idéntica. La elección para mí por lo general depende de lo que está dentro. Si voy a citar una cadena que tiene comillas simples, usaré comillas dobles y viceversa, para evitar tener que escapar los caracteres de la cadena.
Ejemplos:
"this doesn't require escaping the single quote"
'she said "quoting is easy in python"'
Esto se documenta en los " Literales de cadena " página de la documentación de python:
En otros idiomas, los metacaracteres no se interpretan si utiliza comillas simples. Toma este ejemplo en Ruby:
irb(main):001:0> puts "string1\nstring2"
string1
string2
=> nil
irb(main):002:0> puts 'string1\nstring2'
string1\nstring2
=> nil
En Python, si quieres que la cadena se tome literalmente, puedes usar cadenas en bruto (una cadena precedida por el carácter 'r'):
>>> print 'string1\nstring2'
string1
string2
>>> print r'string1\nstring2'
string1\nstring2
Las cadenas entre comillas simples y dobles en Python son idénticas. La única diferencia es que las cadenas de comillas simples pueden contener caracteres de comillas dobles sin escapar, y viceversa. Por ejemplo:
'a "quoted" word'
"another 'quoted' word"
Nuevamente, hay cadenas de comillas triples, que permiten que tanto los caracteres de las citas como las nuevas líneas no se escapen.
Puede sustituir variables en una cadena usando especificadores con nombre y locals () integrado:
name = 'John'
lastname = 'Smith'
print 'My name is %(name)s %(lastname)s' % locals() # prints 'My name is John Smith'
El intérprete interactivo de Python prefiere comillas simples:
>>> "text"
'text'
>>> 'text'
'text'
Esto podría ser confuso para los principiantes, así que me quedo con comillas simples (a menos que tenga diferentes estándares de codificación).
La diferencia entre " y la 'cadena de citas es solo en estilo, excepto que una elimina la necesidad de escapar de la otra dentro del contenido de la cadena.
Estilo
PEP8 recomienda una regla consistente, PEP257 sugiere que las cadenas de documentación usan comillas dobles triples.
En Python, las cadenas entre comillas simples y las cadenas entre comillas dobles son las mismo. Este PEP no hace una recomendación para esto. Elige una regla y apégate a ello. Cuando una cadena contiene comillas simples o dobles Los caracteres, sin embargo, usan el otro para evitar barras invertidas en la cuerda. Mejora la legibilidad.
Para cadenas de comillas triples, use siempre comillas dobles para ser de acuerdo con la convención de docstring en PEP 257.
Sin embargo, ampliamente utilizada es la práctica de preferir comillas dobles para cadenas de lenguaje natural (incluida la interpolación), por lo tanto, cualquier cosa que sea potencialmente candidata para I18N. Y comillas simples para cadenas técnicas: símbolos, caracteres, rutas, opciones de línea de comandos, REGEXes técnicos, ...
(Por ejemplo, al preparar el código para I18N, ejecuto un REGEX semiautomático convirtiendo cadenas entre comillas dobles rápidamente para usar, por ejemplo, gettext
)
Hay 3 formas en las que puedes poner cadenas en python: " cadena " 'cuerda' " " " cuerda cuerda " " " todos producen el mismo resultado.
No hay diferencia en Python, y realmente puedes usarlo para tu ventaja al generar XML. La sintaxis XML correcta requiere comillas dobles alrededor de los valores de los atributos, y en muchos idiomas, como Java, esto te obliga a escapar de ellos al crear una cadena como esta:
String HtmlInJava = "<body bgcolor=\"Pink\">"
Pero en Python, simplemente usa la otra cita y asegúrate de usar la cita final como esta:
html_in_python = '<body bgcolor="Pink">'
Muy bien, ¿eh? También puede usar tres comillas dobles para iniciar y finalizar cadenas de varias líneas, con los EOL incluidos de esta manera:
multiline_python_string = """
This is a multi-line Python string which contains line breaks in the
resulting string variable, so this string has a '\n' after the word
'resulting' and the first word 'word'."""
Sí. Los que dicen que las comillas simples y dobles son idénticas en Python son simplemente erróneas.
De lo contrario, en el siguiente código, la cadena entre comillas dobles no habría tardado un 4,5% más en procesarse por Python:
import time
time_single = 0
time_double = 0
for i in range(10000000):
# String Using Single Quotes
time1 = time.time()
str_single1 = 'Somewhere over the rainbow dreams come true'
str_single2 = str_single1
time2 = time.time()
time_elapsed = time2 - time1
time_single += time_elapsed
# String Using Double Quotes
time3 = time.time()
str_double1 = "Somewhere over the rainbow dreams come true"
str_double2 = str_double1
time4 = time.time()
time_elapsed = time4 - time3
time_double += time_elapsed
print 'Time using single quotes: ' + str(time_single)
print 'Time using double quotes: ' + str(time_double)
Salida:
>python_quotes_test.py
Time using single quotes: 13.9079978466
Time using double quotes: 14.5360121727
Entonces, si quieres un código respetable y de limpieza rápida en el que pareces saber tus cosas, usa comillas simples para las cadenas siempre que sea práctico. También gastarás menos energía saltándote la tecla de mayúsculas.