Есть ли какая-либо разница между “string” и "string" в Python?[дубликат]
-
02-07-2019 - |
Вопрос
На этот вопрос уже есть ответ здесь:
В PHP строка, заключенная в "двойные кавычки", будет проанализирована на предмет замены переменных, в то время как строка, заключенная в "одинарные кавычки", не будет.Применимо ли это также к Python?
Решение
НЕТ:
2.4.1.Строковые и байтовые литералы
..На простом английском языке:Оба типа литералов могут быть заключены в соответствующие одинарные кавычки (
'
) или двойные кавычки ("
).Они также могут быть заключены в соответствующие группы из трех одинарных или двойных кавычек (обычно их называют строками, заключенными в тройные кавычки).Обратная косая черта (\
) символ используется для экранирования символов, которые в противном случае имеют особое значение, таких как перевод строки, сама обратная косая черта или символ кавычки...
Другие советы
Python - один из немногих (?) языков, где 'и " обладают идентичной функциональностью.Выбор для меня обычно зависит от того, что находится внутри.Если я собираюсь заключить в кавычки строку, содержащую одинарные кавычки, я буду использовать двойные кавычки и наоборот, чтобы сократить необходимость экранирования символов в строке.
Примеры:
"this doesn't require escaping the single quote"
'she said "quoting is easy in python"'
Это задокументировано на странице "Строковые литералы" документации python:
В некоторых других языках мета-символы не интерпретируются, если вы используете одинарные кавычки.Возьмем этот пример на 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
Строки в одинарных и двойных кавычках в Python идентичны.Единственное отличие заключается в том, что строки, заключенные в одинарные кавычки, могут содержать символы двойных кавычек без экранирования, и наоборот.Например:
'a "quoted" word'
"another 'quoted' word"
С другой стороны, существуют строки в тройных кавычках, которые позволяют не ограничивать как символы кавычек, так и новые строки.
Вы можете подставлять переменные в строку, используя именованные спецификаторы и встроенную функцию locals():
name = 'John'
lastname = 'Smith'
print 'My name is %(name)s %(lastname)s' % locals() # prints 'My name is John Smith'
Интерактивный интерпретатор Python предпочитает одинарные кавычки:
>>> "text"
'text'
>>> 'text'
'text'
Это может сбить с толку новичков, поэтому я бы придерживался одинарных кавычек (если только у вас не другие стандарты кодирования).
Разница между " и " строковыми кавычками заключается только в стиле - за исключением того, что первое устраняет необходимость экранирования другого внутри содержимого строки.
Стиль
PEP8 рекомендует согласованное правило, ПЕП257 предполагает, что в строках документов используются тройные двойные кавычки.
В Python строки, заключенные в одинарные и двойные кавычки одинаковы.Данный PEP не содержит рекомендаций по этому поводу.Выберите правило и придерживайтесь его.Однако, если строка содержит символы одинарной или двойной кавычки , используйте другую, чтобы избежать обратной косой черты в строке .Это улучшает читабельность.
Для строк, заключенных в тройные кавычки, всегда используйте символы двойных кавычек, чтобы быть совместимыми с соглашением docstring в PEP 257 .
Однако широко используется практика предпочтения двойных кавычек для строк на естественном языке (включая интерполяцию) - таким образом, все, что потенциально является кандидатом для I18N.И одинарные кавычки для технических строк:символы, символы, пути, параметры командной строки, технические регулярные выражения, ...
(Например, при подготовке кода для I18N я запускаю полуавтоматическое РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ, быстро преобразующее строки в двойных кавычках для использования, например gettext
)
Есть 3 способа, которыми вы можете перенаправлять строки в python:"string" "string" """ string string """ все они дают одинаковый результат.
В 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'."""
ДА.Те, кто утверждает, что одинарные и двойные кавычки идентичны в Python, просто ошибаются.
В противном случае в следующем коде обработка строки, заключенной в двойные кавычки, Python не заняла бы на дополнительные 4,5% больше времени:
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
Поэтому, если вам нужен быстрый, чистый, респектабельный код, в котором вы, кажется, знаете свое дело, используйте одинарные кавычки для строк, когда это целесообразно.Вы также потратите меньше энергии, пропустив клавишу shift.