Есть ли какая-либо разница между “string” и "string" в Python?[дубликат]

StackOverflow https://stackoverflow.com/questions/143714

Вопрос

На этот вопрос уже есть ответ здесь:

В 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top