Еще одним ограничением f-строк до версии 3.12 является невозможность использования символов обратной косой черты во встроенных выражениях. Рассмотрим следующий пример, в котором вы пытаетесь объединить строки с помощью символа обратной последовательности
В этом примере возникает синтаксическая ошибка, поскольку f-строки не допускают символов обратной косой черты внутри выражений, разделенных фигурными скобками.
Опять-таки, новая реализация f-строк, появившаяся с Python 3.12, решает эту проблему:
В новой реализации f-строк снято ограничение на использование символов обратной косой черты во встроенных выражениях, поэтому теперь в f-строках можно использовать обратные последовательности.
#python #djangoschool
\n:>>> words = ["Hello", "World!", "I", "am", "a", "Pythonista!"]
>>> f"{'\n'.join(words)}"
File "<input>", line 1
f"{'\n'.join(words)}"
^
SyntaxError: f-string expression part cannot include a backslash
В этом примере возникает синтаксическая ошибка, поскольку f-строки не допускают символов обратной косой черты внутри выражений, разделенных фигурными скобками.
Опять-таки, новая реализация f-строк, появившаяся с Python 3.12, решает эту проблему:
>>> # Python 3.12
>>> words = ["Hello", "World!", "I", "am", "a", "Pythonista!"]
>>> f"{'\n'.join(words)}"
'Hello\nWorld!\nI\nam\na\nPythonista!'\
>>> print(f"{'\n'.join(words)}")
Hello
World!
I
am
a
Pythonista!
В новой реализации f-строк снято ограничение на использование символов обратной косой черты во встроенных выражениях, поэтому теперь в f-строках можно использовать обратные последовательности.
#python #djangoschool
👍2🔥2
F-строки до версии Python 3.11 не позволяли использовать символ
Когда вы используете
Теперь можно добавлять встроенные комментарии, если необходимо что-то уточнить в выражениях f-строки. Еще одним улучшением является возможность добавлять разрывы строк внутри фигурных скобок, аналогично тому, как это можно делать внутри круглых скобок в f-строках. Для этого даже не нужно использовать строки с тройными кавычками.
#python #djangoschool
# во встроенных выражениях. Из-за этого нельзя было вставлять комментарии во встроенные выражения. Если попытаться это сделать, то будет выдана синтаксическая ошибка:>>> employee = {
... "name": "John Doe",
... "age": 35,
... "job": "Python Developer",
... }
>>> f"""Storing employee's data: {
... employee['name'].upper() # Always uppercase name before storing
... }"""
File "<stdin>", line 3
}"""
^
SyntaxError: f-string expression part cannot include '#'Когда вы используете
# для ввода комментария в f-строку, вы получаете синтаксическую ошибку. К счастью, в новых f-строках Python 3.12 эта проблема также устранена:>>> #Python 3.12
>>> employee = {
... "name": "John Doe",
... "age": 35,
... "job": "Python Developer",
... }
>>> f"Storing employee's data: {
... employee["name"].upper() # Always uppercase name before storing
... }"
"Storing employee's data: JOHN DOE"
Теперь можно добавлять встроенные комментарии, если необходимо что-то уточнить в выражениях f-строки. Еще одним улучшением является возможность добавлять разрывы строк внутри фигурных скобок, аналогично тому, как это можно делать внутри круглых скобок в f-строках. Для этого даже не нужно использовать строки с тройными кавычками.
#python #djangoschool
👍6
Расшифровка сообщений об ошибках F-строк
Сообщение об ошибке в первом примере носит общий характер и не указывает на точное место ошибки в строке. Кроме того, выражение заключено в круглые скобки, что создает дополнительную проблему, поскольку в исходном коде круглые скобки отсутствуют.
В Python 3.12 сообщение об ошибке более подробное. Оно сигнализирует о точном месте проблемы в строке. Кроме того, сообщение об ошибке содержит некоторые предложения, которые могут помочь решить проблему.
В данном конкретном примере эти предложения не слишком полезны, они сосредоточены на операторе, который, возможно, ошибочен. Однако точное указание места, где возникла проблема, дает серьезную подсказку. Во встроенном выражении отсутствует операнд.
#python #djangoschool
>>> # Python 3.11
>>> f"{42 + }"
File "<stdin>", line 1
(42 + )
^
SyntaxError: f-string: invalid syntax
>>> # Python 3.12
>>> f"{42 + }"
File "<stdin>", line 1
f"{42 + }"
^
SyntaxError: f-string: expecting '=', or '!', or ':', or '}'
Сообщение об ошибке в первом примере носит общий характер и не указывает на точное место ошибки в строке. Кроме того, выражение заключено в круглые скобки, что создает дополнительную проблему, поскольку в исходном коде круглые скобки отсутствуют.
В Python 3.12 сообщение об ошибке более подробное. Оно сигнализирует о точном месте проблемы в строке. Кроме того, сообщение об ошибке содержит некоторые предложения, которые могут помочь решить проблему.
В данном конкретном примере эти предложения не слишком полезны, они сосредоточены на операторе, который, возможно, ошибочен. Однако точное указание места, где возникла проблема, дает серьезную подсказку. Во встроенном выражении отсутствует операнд.
#python #djangoschool
🔥6👍2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Домой после конфы. Жаль на утрению сходку не попал.
Рад был новым встречам.
В следующий раз смелее подходите фотографироваться😎
Рад был новым встречам.
В следующий раз смелее подходите фотографироваться😎
👍2