Python: какой буквальный разделитель «лучше» использовать? - PullRequest
2 голосов
/ 21 августа 2009

Какой самый лучший буквенный разделитель в Python и почему? Единственный или двойной? И самое главное, почему?

Я новичок в Python и пытаюсь придерживаться только одного. Я знаю, что в PHP, например, "предпочтительнее, потому что PHP не пытается искать переменную 'string'. То же самое в Python?

Ответы [ 8 ]

9 голосов
/ 21 августа 2009

Рассмотрим эти строки:

"Don't do that."
'I said, "okay".'
"""She said, "That won't work"."""

Какая цитата "лучшая"?

9 голосов
/ 21 августа 2009

'потому что это на одно нажатие клавиши меньше, чем ". Сохраните ваши запястья!

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

3 голосов
/ 21 августа 2009

Семантически нет никакой разницы в Python; используйте либо. Python также предоставляет удобный тройной разделитель строк "" "или" ", который может упростить многострочные кавычки. Существует также необработанный строковый литерал (r" ... "или r '...') для запрета \ экранирования. Справочник по языку содержит все детали.

1 голос
/ 21 августа 2009

Для строковых констант, содержащих single quote, используйте double quote в качестве разделителя.

И наоборот, если вам нужно double quote внутри.

Быстрая печать без сдвига приводит к single quote разделителям.

>>> "it's very simple"
>>> 'reference to the "book"'
0 голосов
/ 22 августа 2009

Я не думаю, что есть единственный лучший разделитель строк. Мне нравится использовать разные разделители для обозначения разных типов строк. В частности, мне нравится использовать "..." для разделения строк, используемых для интерполяции или сообщений естественного языка, и '...' для разделения небольших символьных строк. Это дает мне тонкий дополнительный ключ к предполагаемому использованию строкового литерала.

Я стараюсь всегда использовать необработанные строки (r"...") для регулярных выражений, потому что (1) мне не нужно экранировать символы обратной косой черты и (2) мой редактор распознает это соглашение и выполняет подсветку синтаксиса внутри регулярного выражения.

Стилистические проблемы одиночных и двойных кавычек описаны в вопросе 56011 .

0 голосов
/ 22 августа 2009

Это правило, о котором я слышал:

") Если строка предназначена для человека, то есть для интерфейса или вывода, используйте" "

') Если строка является спецификатором, например ключом словаря или параметром, используйте' '

Я думаю, что такое хорошо соблюдаемое правило может иметь смысл для проекта, но лично меня это не волнует. Мне нравится выше, так как я читаю это, но я всегда использую "" (так как я выучил C первым способом назад?).

0 голосов
/ 21 августа 2009

Другие ответы о вложенном цитировании. Другая точка зрения, с которой я столкнулся, но я не уверен, что я подписан на это, состоит в том, чтобы использовать одинарные кавычки (') для символов (которые являются строками, но ord / chr быстро выбираются) и использовать двойные кавычки для струнных. Который устраняет неоднозначность между строкой, которая должна быть одним символом, и строкой, которая может оказаться одним символом.

Лично я нахожу, что большинство машинисток касаний заметно не подвержены «нагрузке» от использования клавиши Shift. YMMV на этой части. Спуск по «быстрее не использовать сдвиг» - скользкий путь. Также быстрее использовать гиперконденсированные имена переменных / функций / классов / модулей. Все просто так любят быстрые и короткие имена файлов DOS 8.3. :) Выберите то, что имеет смысл для вас, а затем оптимизируйте.

0 голосов
/ 21 августа 2009

Одинарные и двойные кавычки действуют одинаково в Python. Escape (\n) всегда работают, и нет никакой интерполяции переменных. (Если вы не хотите экранирования, вы можете использовать флаг r, как в r"\n".)

Поскольку я работаю в Perl, у меня есть привычка использовать одинарные кавычки для простых строк и двойные кавычки для форматов, используемых с оператором %. Но на самом деле нет никакой разницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...