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






Нет:
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: "нить" 'нить' "" " нить нить "" " все они дают одинаковый результат.
и строки с тройными кавычками в первую очередь предназначены для многострочных комментариев.
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 запусков) быстрее, чем результат в одинарных кавычках. Что еще более важно, независимо от того, какое цитирование я использую первым, второй результат всегда быстрее первого (т. Е. Я могу переместить код с двойными кавычками перед кодом с одинарными кавычками, а второй всегда выполняется быстрее).
Какая версия Брайана? Я на 2.7.6
Спасибо. Я также изменил порядок разделов перед публикацией, и одинарные кавычки всегда были быстрее, так что поймите, я думаю.
вы должны удалить это, прежде чем элитные гестапо StackOverflow появятся толпами и проголосуют против вашего сообщения
Интерактивный интерпретатор Python предпочитает одинарные кавычки:
>>> "text"
'text'
>>> 'text'
'text'
Это может сбивать с толку новичков, поэтому я буду придерживаться одинарных кавычек (если у вас нет других стандартов кодирования).
Он предпочитает одинарные кавычки, если одинарные кавычки не находятся в самой строке. Затем он переключается на двойные кавычки. IPython делает с точностью до наоборот.
Разница между "и" строковым цитированием заключается только в стиле, за исключением того, что одно устраняет необходимость экранирования другого внутри содержимого строки.
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)
мне понравилось слышать «широко распространенная практика», звучит разумно
на самом деле есть четвертый способ: '' 'строка' ''