С Python 3.12 я могу без ошибок сделать следующее:
a = "abc"
s = f"{a.replace("b", "x")}"
Обратите внимание на вложенные символы "
.
В Python 3.6 то же самое вызовет SyntaxError, поскольку в этой части )
отсутствуют закрывающие }
и f"{a.replace("
.
Почему это? Я бы ожидал SyntaxError и в версии 3.12.
Это синтаксическая ошибка. Вы должны использовать разные двойные кавычки, например, необычные двойные кавычки Word.
Я ожидаю синтаксическую ошибку. Но в Windows этого не происходит. Конечно, это Python 3.12 для Windows и 3.6 для Linux, но синтаксические ошибки должны быть одинаковыми на всех платформах, имхо.
Кстати, в данном конкретном случае f-строка с самого начала совершенно лишняя.
Отредактировал вопрос, чтобы уточнить, почему он не является дубликатом связанного вопроса.
Вы можете изменить "
на '
s = f'{a.replace("b", "x")}'
Python 3.12 реализует PEP 701, который позволяет использовать тот же символ кавычки, что и сама внешняя f-строка.
>>> songs = ['Take me back to Eden', 'Alkaline', 'Ascensionism']
>>> f"This is the playlist: {", ".join(songs)}"
'This is the playlist: Take me back to Eden, Alkaline, Ascensionism'
Поэтому, если вы используете 3.12 в одной системе и более старую версию в другой, разницы следует ожидать.
Вы используете две разные версии Python.