Ответ 1
Если вы посмотрите на сгенерированный код байта для каждого из этих двух параметров, вы увидите, что это приводит к одному и тому же набору операций:
>>> dis.dis("""f'One plus one is ' f'equal to {1+1}'""")
1 0 LOAD_CONST 0 ('One plus one is equal to ')
2 LOAD_CONST 1 (2)
4 FORMAT_VALUE 0
6 BUILD_STRING 2
8 RETURN_VALUE
>>> dis.dis("""'One plus one is ' f'equal to {1+1}'""")
1 0 LOAD_CONST 0 ('One plus one is equal to ')
2 LOAD_CONST 1 (2)
4 FORMAT_VALUE 0
6 BUILD_STRING 2
8 RETURN_VALUE
Итак, для Python это делает то же самое: строка конкатенируется во время компиляции, а вся строка оценивается как строка формата.
Обратите внимание, что в соответствии с PEP, f-строки фактически конкатенируются во время выполнения, чтобы убедиться, что каждое выражение формата оценивается независимо друг от друга:
Смежные f-строки и регулярные строки объединены. Регулярные строки объединяются во время компиляции, а f-строки объединяются во время выполнения.
Вот почему в следующем примере будут созданы два кода кода FORMAT_VALUE
:
>>> dis.dis("""f'{2+2}' f'{3+3}'""")
1 0 LOAD_CONST 0 (4)
2 FORMAT_VALUE 0
4 LOAD_CONST 1 (6)
6 FORMAT_VALUE 0
8 BUILD_STRING 2
10 RETURN_VALUE
Это не повлияет на f-строки, которые фактически не содержат каких-либо заполнителей формата. Они все равно будут объединены во время компиляции:
>>> dis.dis("""f'foo' f'bar'""")
1 0 LOAD_CONST 0 ('foobar')
2 RETURN_VALUE
Таким образом, вы можете просто включить префикс f
для постоянных строк в любом случае, и когда они не содержат выражения формата, они не будут обрабатываться как строки формата.
Итак, в вашем конкретном случае, поскольку нет функциональной разницы, и оба варианта скомпилированы в одно и то же, что оставляет это как чистый выбор стиля, который каждый должен ответить сам за себя.
Если вы смотрите на существующие руководства по стилям, скорее всего, они еще не покрывают f-строки. Но тогда вы могли бы использовать ту же директиву, что и для сырых строк, хотя лично я не ожидаю, что руководства по стилям действительно будут сильно охватывать эту область. Просто выберите то, что выглядит лучше, читаемо и что имеет для вас наибольший смысл. В конце концов, непрерывные строки на самом деле не такие общие (и у вас больше шансов иметь тройные кавычки для более длинных строк).