Некоторые языки программирования допускают два вида кавычек для оформления строк: одинарные и двойные. Это особенно удобно, когда в строке уже содержатся кавычки. Чтобы избежать экранирования обратным слешем, достаточно инвертировать крайние кавычки.

Например:

message1 = "Object 'foo' does not exist."
message2 = 'Object "foo" does not exist.'

гораздо удобней, чем

message3 = "Object \"foo\" does not exist."

Возникает холивар, какие кавычки использовать по умолчанию?

Правильный ответ – двойные.

Объяснение этому простое: если двойные кавычки работают почти во всех языках, то одинарные – только в некоторых. Согласно Сишному синтаксису, одинарными кавычками обозначается символ (Char), а не строка. Навскидку назову Си, Плюсы, Джаву, Кложу.

Это не такие заурядные языки, чтобы их игнорировать. При копировании строк, например, XPath- или CSS-селекторов, начинается ад с исправлением кавычек. Выражение

'.//div[@id="foo"]'

без проблем сработает в Джаваскрипте и Питоне, но не в Джаве или Кложе. Поэтому правильней записать его так:

".//div[@id='foo']"

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

Запомните – двойные.