Есть ли разница между «строкой» и «строкой» в Python?

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
66
0
59 893
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Ответ принят как подходящий

Нет:

2.4.1. String and Bytes literals

...In plain English: Both types of literals can be enclosed in matching single quotes (') or double quotes ("). They can also be enclosed in matching groups of three single or double quotes (these are generally referred to as triple-quoted strings). The backslash (\) character is used to escape characters that otherwise have a special meaning, such as newline, backslash itself, or the quote character...

Есть 3 способа цитирования строк в Python: "нить" 'нить' "" " нить нить "" " все они дают одинаковый результат.

на самом деле есть четвертый способ: '' 'строка' ''

nosklo 27.09.2008 19:34

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

camflan 27.09.2008 22:17

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

Примеры:

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

Это задокументировано на странице «Строковые литералы» документации Python:

В 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 идентичны. Единственное отличие состоит в том, что строки в одинарных кавычках могут содержать неэкранированные двойные кавычки, и наоборот. Например:

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

В некоторых других языках метасимволы не интерпретируются, если вы используете одинарные кавычки. Возьмем этот пример на 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, просто ошибаются.

В противном случае в следующем коде строка с двойными кавычками не заняла бы лишних 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

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

Ваши методы тестирования ошибочны и не соответствуют действительности. Например, когда я запускаю ваш точный код на своей машине, результат в двойных кавычках постоянно (9 из 10 запусков) быстрее, чем результат в одинарных кавычках. Что еще более важно, независимо от того, какое цитирование я использую первым, второй результат всегда быстрее первого (т. Е. Я могу переместить код с двойными кавычками перед кодом с одинарными кавычками, а второй всегда выполняется быстрее).

Bryan Oakley 27.08.2014 17:43
Сгенерированный байт-код также кажется таким же ... Which is exactly what ссылка на язык says it should be.
Martin Tournoij 27.08.2014 19:39

Какая версия Брайана? Я на 2.7.6

gseattle 27.08.2014 21:31

Спасибо. Я также изменил порядок разделов перед публикацией, и одинарные кавычки всегда были быстрее, так что поймите, я думаю.

gseattle 30.08.2014 03:02

вы должны удалить это, прежде чем элитные гестапо StackOverflow появятся толпами и проголосуют против вашего сообщения

touch my body 14.08.2015 05:53

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

>>> "text"
'text'

>>> 'text'
'text'

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

Он предпочитает одинарные кавычки, если одинарные кавычки не находятся в самой строке. Затем он переключается на двойные кавычки. IPython делает с точностью до наоборот.

honza_p 07.12.2017 17:04

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

Стиль

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

In Python, single-quoted strings and double-quoted strings are the same. This PEP does not make a recommendation for this. Pick a rule and stick to it. When a string contains single or double quote characters, however, use the other one to avoid backslashes in the string. It improves readability.

For triple-quoted strings, always use double quote characters to be consistent with the docstring convention in PEP 257 .

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

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

мне понравилось слышать «широко распространенная практика», звучит разумно

hotzen 24.11.2016 19:58

Другие вопросы по теме