Подтвердить что ты не робот

Есть ли разница между "string" и "string" в Python?

В PHP строка, заключенная в "двойные кавычки", будет анализироваться на заменяемые переменные, тогда как строка, заключенная в "одиночные кавычки", не будет. В Python это также применимо?

4b9b3361

Ответ 1

Нет:

2.4.1. Строковые и байтовые литералы

... На простом английском языке: Оба типа литералов могут быть заключены в совпадение одинарных кавычек (') или двойных кавычек ("). Они также могут быть заключены в сопоставимые группы из трех одиночных или двойных кавычек (они обычно называются тройными кавычками). Символ обратной косой черты (\) используется для удаления символов, которые в противном случае имеют особое значение, например, новую строку, обратную косую черту или символ кавычки...

Ответ 2

Python - один из немногих (?) языков, где "и" имеют идентичную функциональность. Выбор для меня обычно зависит от того, что внутри. Если я собираюсь привести строку с одинарными кавычками в ней, я буду используйте двойные кавычки и наоборот, чтобы сократить использование символов в строке.

Примеры:

"this doesn't require escaping the single quote"
'she said "quoting is easy in python"'

Это описано на странице "Линии струн" документации python:

Ответ 3

В некоторых других языках метасимволы не интерпретируются, если вы используете одинарные кавычки. Возьмем этот пример в Ruby:

irb(main):001:0> puts "string1\nstring2"
string1
string2
=> nil
irb(main):002:0> puts 'string1\nstring2'
string1\nstring2
=> nil

В Python, если вы хотите, чтобы строка была взята буквально, вы можете использовать необработанные строки (строка, которой предшествует символ "r" ):

>>> print 'string1\nstring2'
string1
string2
>>> print r'string1\nstring2'
string1\nstring2

Ответ 4

Одиночные и двойные кавычки в Python идентичны. Единственное различие заключается в том, что строки с одним кавычком могут содержать неэкранированные символы двойной кавычки и наоборот. Например:

'a "quoted" word'
"another 'quoted' word"

Затем снова есть строки с тремя кавычками, которые позволяют обеим символам кавычек и новым строкам быть неэксклюзивными.

Вы можете заменить переменные в строке с помощью именованных спецификаций и locals() builtin:

name = 'John'
lastname = 'Smith'
print 'My name is %(name)s %(lastname)s' % locals()  # prints 'My name is John Smith'

Ответ 5

Интерактивный интерпретатор Python предпочитает одинарные кавычки:

>>> "text"
'text'

>>> 'text'
'text'

Это может ввести в заблуждение новичков, поэтому я буду придерживаться одинарных кавычек (если у вас нет разных стандартов кодирования).

Ответ 6

Разница между "и" строковым цитированием только в стиле, за исключением того, что она устраняет необходимость экранирования другого внутри содержимого строки.

Стиль

PEP8 рекомендует согласованное правило, PEP257 предполагает, что docstrings используют тройные двойные кавычки.

В Python строками с одиночными кавычками и строками с двойными кавычками являются одна и та же. Этот PEP не дает рекомендации для этого. Выберите правило и придерживаться его. Когда строка содержит одиночную или двойную кавычку символы, однако, используют другой, чтобы избежать обратных косых черт в строка. Это улучшает читаемость.

Для трехколейных строк всегда используйте символы двойной кавычки в соответствии с соглашением docstring в PEP 257.

Широко используется, однако, практика предпочитает двойные кавычки для строк естественного языка (включая интерполяцию) - таким образом, все, что потенциально является кандидатом для I18N. И одинарные кавычки для технических строк: символы, символы, пути, параметры командной строки, технические REGEXes,...

(Например, при подготовке кода для I18N я быстро запускаю полуавтоматические REGEX-конвертирующие двойные кавычки для использования, например, gettext)

Ответ 7

Есть три способа выстроить строки в python: "Строка" "Строка" "" строка строка "" все они дают одинаковый результат.

Ответ 8

В Python нет никакой разницы, и вы можете использовать его в своих интересах при создании XML. Правильный синтаксис XML требует двойных кавычек вокруг значений атрибутов, и на многих языках, таких как Java, это заставляет вас избегать их при создании такой строки:

String HtmlInJava = "<body bgcolor=\"Pink\">"

Но в Python вы просто используете другую цитату и не забудьте использовать соответствующую котировочную цитату следующим образом:

html_in_python = '<body bgcolor="Pink">'

Довольно приятно, да? Вы также можете использовать три двойных кавычки для начала и конца многострочных строк, при этом EOL включается следующим образом:

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'."""

Ответ 9

Да. Те, кто утверждает одиночные и двойные кавычки, идентичны в Python, просто ошибаются.

В противном случае в следующем коде строка с двойными кавычками не должна была бы на 4,5% больше времени для обработки 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)

Вывод:

>python_quotes_test.py
Time using single quotes: 13.9079978466
Time using double quotes: 14.5360121727

Итак, если вам нужен быстрый чистый респектабельный код, где вы, кажется, знаете свои вещи, используйте одинарные кавычки для строк, когда это практически возможно. Вы также потратите меньше энергии, пропустив клавишу переключения.