Одинарные кавычки против двойных кавычек [закрыто]

79

Я только начал работу, где я пишу Python после того, как пришел из Java-фона, и я заметил, что другие разработчики склонны заключать строки в кавычки, используя одинарные кавычки ( '') вместо двойных кавычек ( ""). Например:

line1 = 'This is how strings typically look.'
line2 = "Not like this."

Есть ли для этого особая причина, кроме личных предпочтений? Это правильный способ цитирования строк? В частности, я хочу знать, есть ли какой-то тип стандартной или общепринятой передовой практики, которая определяет этот стиль кодирования.

Эрик Гидрик
источник
5
Если вы когда-нибудь попадете Ruby, то на самом деле есть техническая разница между одинарными и двойными кавычками. Двойные кавычки поддерживают интерполяцию строк - одинарные кавычки анализируются как литералы.
KChaloux
5
То же самое верно для Perl и большинства оболочек.
Blrfl
18
Как этот вопрос «неконструктивен»? Как абсолютный новичок в Python, я должен знать это. Если вы пишете bash-скрипт, есть большая разница.
Magicsowon
19
Не конструктивно? Geez. Первый результат Google для "одинарных двойных кавычек", говорит вам, что вам нужно знать быстро. Спасибо, что спросили Эрика и ответили ласково
aggieNick02

Ответы:

65

Другие ответы верны в том смысле, что в этом нет никакой технической разницы, но я видел одно неформальное правило стиля в паре проектов с открытым исходным кодом: двойные кавычки используются для строк, которые в конечном итоге могут быть видны пользователю (нужны они или нет) перевод), а одинарные кавычки предназначены для строк, которые относятся к функциональности самого кода (например, ключи dict, регулярные выражения, SQL).

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

Обратите внимание, что PEP 8 (который я не заметил, когда писал этот ответ) говорит :

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

Как указывает комментатор, это не обязательно противоречиво, в зависимости от того, как вы интерпретируете «правило». То, что я предлагаю, на самом деле не работает со второй половиной цитаты.

detly
источник
1
Это может быть домашний стиль, но он против PEP 8: выберите один и используйте его для всего файла, независимо от содержимого.
Нильс фон Барт
4
@NilsvonBarth PEP говорит: «выберите правило и придерживайтесь его», а не «выберите один символ-разделитель и придерживайтесь его». «Двойные кавычки для видимого пользователем текста, одинарные кавычки для вещей, используемых машиной», похоже, является прекрасным правилом, которого нужно придерживаться.
Таннер Светт
1
@Tanner Swett Извините, вы правы; это руководство по стилю Google Python, в котором указано «в файле» google.github.io/styleguide/pyguide.html#310-strings
Нильс фон Барт,
Черный на самом деле форматирует строки Python в двойные кавычки. Даже jslint хочет, чтобы строки JavaSciprt были заключены в двойные кавычки. Большинство старых языков никогда не предоставляло опций. То, что вы можете это сделать, не означает, что вы должны это делать. Конечно, есть несколько случаев, когда это очень приятно, например, когда в строке есть кавычка. Тем не менее, на практике большинство ваших строк должны исходить из набора данных, который не жестко запрограммирован в вашей кодовой базе.
Боборт
1
@bobort Даже если вы ищете строки в системе перевода или пользовательского интерфейса, вам часто все еще нужны строковые ключи для тех, кто находится в вашем коде. Но я согласен, что дела пошли дальше, и это различие не принесет никакой пользы.
детально
21

Это очень просто:

  • Одинарные кавычки позволяют встраивать двойные кавычки без экранирования.
  • Двойные кавычки позволяют встраивать не экранированные одинарные кавычки.

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

Следующая цитата прямо из документации по строковым литералам.

доступны в строках Unicode. Префикс 'b' или 'B' игнорируется в Python 2; это указывает на то, что литерал должен стать байтовым литералом в Python 3 (например, когда код автоматически конвертируется с 2to3). За префиксом «u» или «b» может следовать префикс «r».

В строках с тройными кавычками допускаются (и сохраняются) новые строки без кавычек (за исключением того, что три неэкранированные кавычки в строке завершают строку. («Цитата» - это символ, используемый для открытия строки, т. Е. «Или».)


источник
15
Вопрос, конечно, в том, почему Pythonic предпочитает одинарные кавычки, когда почти каждый другой язык использует двойные кавычки?
Мартин Беккет,
13
@MartinBeckett потому что
3
Ааа, конечно ;-)
Мартин Беккет
6
@JarrodRoberson: Я думаю, что «потому что» (или «потому что», если хотите) является правильным ответом, если он написан каким-то PEP (или подобным), что это Pythonic . В противном случае это просто личный выбор.
Иоахим Зауэр
5
одинарные кавычки выглядят чище, а также не требуют клавиши Shift для ввода
JoelFan
17

С технической точки зрения это не имеет значения, с точки зрения стиля несколько мыслей:

  • Большинство других языков программирования используют двойные кавычки.
  • При написании на английском языке обычно используются двойные кавычки.
  • Одиночные кавычки полезны, когда в вашем приложении много нетехнического / повествовательного текста, потому что они позволяют вам использовать двойные кавычки более естественным образом. bar = '"It\'s awesome" he said.'
  • С другой стороны, символ одинарной кавычки также используется несколько раз в английском языке. bar = "\"It's awesome\" he said."
API-Beast
источник
Обратите внимание, что "часто используется и в технических строках -e, g f'you submit" {dumb_thing}, но это слишком глупо даже для нас! '
Кристиан Зауэр
4

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

Тип цитат, используемых «по умолчанию» (если нет веских причин использовать одну или другую), в значительной степени зависит от личных предпочтений.

Для получения дополнительной информации см. Раздел « Строковые литералы» в документации по Python.

Грег Хьюгилл
источник
4

Некоторые вещи, которые следует учитывать при выработке привычки, использовать ли одинарные или двойные кавычки регулярно.

Двойные кавычки требуют нажатия двумя пальцами; и, следовательно, более вероятны ошибки при наборе текста, а также снижение скорости

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

Строки документа используют тройные символы: что выглядит лучше? """""" или же ''''''

Хотя я не видел этого в ОС Windows, некоторые инструменты синтаксиса или документации могут ожидать двойные стихи в одинарных кавычках.

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

DevPlayer
источник
4

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

Почему? Для программистов других языков можно быстро адаптироваться и легче понимать код.

Если программист C видит:

'Writing "It\'s big?" No.'

Будут колебаться вместо:

"Writing \"It's big?\" No."
Lucio
источник
3
"Пишу \" Это большой? \ "Нет."
API-Beast
@Lucio Вот что я делал, я просто не знал, нарушал ли я какой-то установленный стандарт Python или нет.
Эрик Гидрик
@EricHydrick Нет, вы можете выбрать один или другой.
Лусио