Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top