Ответ
В Python нет разницы в производительности между одинарными (') и двойными (") кавычками. Оба варианта компилируются в одинаковые байткод-инструкции.
Доказательство через dis module:
import dis
def single_quotes():
return 'Hello, World!'
def double_quotes():
return "Hello, World!"
print("Single quotes bytecode:")
dis.dis(single_quotes)
print("nDouble quotes bytecode:")
dis.dis(double_quotes)
Оба выводят одинаковый байткод:
2 0 LOAD_CONST 1 ('Hello, World!')
2 RETURN_VALUE
Рекомендации по использованию:
-
Стиль кода (PEP 8): Будьте консистентны в проекте
-
Содержание кавычек: Используйте противоположные кавычки внутри строки
message = "It's a beautiful day" # Лучше двойные quote = 'He said, "Hello!"' # Лучше одинарные -
f-strings (форматированные строки): Всегда требуют двойных кавычек
name = "Alice" greeting = f"Hello, {name}!" # Правильно greeting = f'Hello, {name}!' # Также работает, но менее распространено
Производительность f-strings vs других методов:
import timeit
# f-string быстрее всего
print(timeit.timeit("f'Value: {x}'", setup="x=42", number=1000000))
print(timeit.timeit("'Value: {}'.format(x)", setup="x=42", number=1000000))
print(timeit.timeit("'Value: %d' % x", setup="x=42", number=1000000))
Вывод: Выбирайте кавычки исходя из содержимого строки и стиля проекта, а не из соображений производительности.
Ответ 18+ 🔞
Вот, смотри, тут народ часто загоняется — а что быстрее, одинарные кавычки или двойные? Так вот, слушай сюда, разницы нихуя нет, вообще ноль целых, ноль десятых. Компилятору похуй, он их жуёт одинаково.
Доказательство через dis module:
import dis
def single_quotes():
return 'Hello, World!'
def double_quotes():
return "Hello, World!"
print("Single quotes bytecode:")
dis.dis(single_quotes)
print("nDouble quotes bytecode:")
dis.dis(double_quotes)
Оба выдают один и тот же байткод, ёпта:
2 0 LOAD_CONST 1 ('Hello, World!')
2 RETURN_VALUE
Так как же тогда выбирать, спросишь? Ну, вот тебе правила, чтоб не выглядеть как манда с ушами:
- Консистентность — наше всё (PEP 8): Выбери что-то одно в проекте и придерживайся. Не надо мешать всё в кучу, а то получится пиздопроебибна.
- Содержание строки: Просто чтобы не экранировать кавычки внутри. Если в строке апостроф — бери двойные снаружи, и наоборот.
message = "It's a beautiful day" # Так норм quote = 'He said, "Hello!"' # И так тоже - f-strings (форматированные строки): Тут, бля, исторически сложилось, что все используют двойные. Хотя и одинарные работают, но выглядит это как-то криво, честно говоря.
name = "Alice" greeting = f"Hello, {name}!" # Вот так — красиво и правильно
А вот что реально имеет значение для скорости, так это выбор метода форматирования. f-strings — это просто космос по скорости, ядрёна вошь!
import timeit
# f-string — чемпион
print(timeit.timeit("f'Value: {x}'", setup="x=42", number=1000000))
print(timeit.timeit("'Value: {}'.format(x)", setup="x=42", number=1000000))
print(timeit.timeit("'Value: %d' % x", setup="x=42", number=1000000))
Итог: Не парься насчёт кавычек, они одинаковые. Лучше думай о читаемости кода и используй f-strings, где можно — это реально быстрее. А кавычки — дело вкуса и соглашения в команде.